차량 실내 하부 방음, 도어 방음 테스트

  사람의 행복이란 이상한 만족감에서부터 시작된다. 특히 차와 관련해서 별 것 아닌 것들로부터 큰 만족을 느끼곤 하는데, 차량 튜닝, 차량 용픔, 하여튼 차와 관련된 여러 산업들이 성행하는 것을 보면 차가 사람에게 그렇게 중요한가 의문이 생긴다. 특히 나, 본인은 출퇴근 시간이 다 합쳐서 하루에 30분도 안 된다. 그 짧은 시간에 느껴지는 만족감을 위해 별의 별 짓을 다 하는 걸 보면 그게 그렇게 좋은가? 하고 스스로에게 물어본다.

  아무리 즐거운 오르가즘도 10분을 넘기기는 쉽지 않은데, 그 10분을 위해서 굉장한 투자를 하지 않나? 사람은 밥만 먹곤 못 산다. 비록 짧게 스치는 소소한 기쁨이라도 그 기쁨 때문에 살 수 있다.




  CT200h, 내 차는 하이브리드라서 아침에 추우면 온도를 올린답시고 욍욍거리면서 공회전을 한다. 이게 마음에 안 들어서 시작된 방음 작업이 대시보드 방음, 그리고 실내 바닥, 도어 방음까지 이어지고 있다.

   시공 과정을 사진으로 보면 이렇다. 대시보드 방음은 진작에 했고, 이번에 실내바닥, 도어 방음을 마친 것이다.

   이하는 업체 사장님께 부탁해서 얻어온 사진인데, 작업 과정은 다음과 같다.

  우선 차량의 시트 및 모든 소품을 다 뜯어내고 방진 패드를 꼼꼼이 붙인다. 





 다음은 흡음재로 빈틈을 메운다.






  그 위에 원래 바닥, 기구들을 차례로 깔면 된다.

  문짝(전문용어로 도어)의 경우는 폼을 먼저 쏴서 코팅부터 한다. 그 다음은 똑같다.





  사실 작업 내역은 설명을 들었어도 잘 모른다 ㅋㅋ 대충 사진 보면서 이런 식인가 추측할 뿐... 과정은 어느 업체든 다 비슷할 것이다. 다만 복잡한 차량 내부를 얼마나 꼼꼼하게 살펴볼 것인가에 작업 성패가 달렸다.



  하여튼 틴팅까지 3일이나 걸렸는데, 사장님도 결과를 궁금해하고 나도 너무 궁금해서 일 끝나고 밤중에 고속도로까지 나가서 신나게 달리고 왔다.

  소음이란 건 사실 체감하기가 쉽지 않다. 사람의 청각은 워낙 부정확하고 주관적이라서 어느 정도의 소음 감소는 티도 안 난다. 소리가 아예 안 들리면 모를까, 작게 들린다면 그것도 어쨌든 들리는 것이기 때문에, 진짜 작아졌는지 판단하기 어렵다. 작은 소리는 그 나름대로 또 거슬리기 때문에 소리가 작아졌다고 해서 만족감을 느끼기도 쉽지 않다. 소리가 몇 퍼센트 감소했네 라고 하는 표현도 다 주관적이다. db로 소음을 측정하지 않는 이상 다 똑같다.

 이 때 객관적인(?) 테스트 방법이 있다. 바로 음악을 트는 것이다. 작은 불륨부터 시작해서 음악이 제대로 들릴 정도까지 불륨을 키워보면 지금 소음이 어느 정도인지 대략 알 수 있다.

  결과만 먼저 얘기하자면, 160km/h 로 달렸을 때, 보통 내가 듣던  음량 수치(차에 표시되는 단순 숫자)가 30-35였는데, 오늘은 23만 되도 만족스럽게 음악이 다 들렸다. 이게 어느 정도냐? 작업 전에는 귀가 살짝 아플 정도로 음악을 틀어야 했는데, 작업 후에는 그냥 평소 시내 주행하듯 소리를 키우면 되는 것이다. 

  그리고 이런 작업의 특성상 고음이 가장 잘 방어가 되고 저음은 어떻게든 뚫고 들어오는데, 마치  터널 지날 때 외압에 의해 귀가 멍멍해진 것처럼 느껴져서 나도 모르게 침을 몇 번이나 삼켰다. 마치 귀가 멍멍해진 것처럼 소리가 둔탁해졌다.



  당연히 소리가 다 없어지지는 않는다. 들리는 소리는 여전히 들린다.  음악 다 끄고 가만히 들어보면 여전히 소리는 거슬린다. 다만 현저히 작아졌고, 그게 종류별로 다른데

  노면/바퀴 : 기분 상 반 이하로 감소했다. 아마 실제로는 (음악 테스트 결과처럼) 더 작아졌을 것이다. 이 부분은 아스팔트 컨디션에 따라 크게 달라진다. 거친 노면을 달릴 때 거친 소리가 생생히 들리는데, 다른 굵직한 소음들이 다 없어졌기 때문이다. 거친 굉음이 줄어드니, 레이싱 경기에서 들릴법한 고음이 귀에 들어오기 시작한다.

  바람소리 : 노면 소음이 줄어드니 오히려 시원하게 잘 들린다 하하 옆에 지나가는 차 소리가 아주 생생하다. 창문 유리를 뚫고 들어오는 소리, 천장을 스치는 소리들은 그냥 어쩔 수 없는 것이다.

  엔진소리 : 상당히 많이 개선되어 굵은 저음 외에는 들리지 않는다. 최소한 엔진이 동작하고 있다는 정도만 들리는 수준이다. 아침의 공회전 소리는 어떻게 되었는가? 여전히 들리긴 하는데 시끄러운 느낌이 사라지고 그냥 울리는 수준. 하여튼 엔진 소리와 관련해서는 더 이상 방음이 필요없게 됐다.

  결론 : 1. 큰 소리가 줄어든다 2. 다른 종류의 소음이 들리기 시작한다, 안 들리던 소리가 들린다...

3. 그리고  음악 소리가 달라진다?


  작업 후 음악을 틀어보니 음질이 달라져있다. 스피커가 들어있는 문에도 전부 흡음재를 넣었으니 저음이 더 단단하게 들리려나? 그 정도로 생각했는데, 그게 아니라 이상하게 튀던 피크들이 다 평탄하게 되었다. ??왜? 주파수특성이 이렇게 달라질 줄 알았으면 미리 정확하게 테스트를 해두는 건데....

  하여튼 작업 전 내 느낌으로는 보컬의 끝단을 강조하는 2kHz살짝 아래 부근 그리고 3.5kHz부근 그리고 또 4-5kHz 부근 또 여기 저기.. 중고역대에서 피크와 딥이 반복되고, 이게 너무 거슬려서 아예 고음을 다 낮추고 다녔는데, 이 찌글찌글한 주파수 응답이 다 펴진 것이다. 왜 그럴까?

  도어 방음을 하면서 15cm이하의 공간을 다 메워버렸을 건데, 아마 여기서 중고역대의 공명이 일어나지 않았나 싶다. 예를 들어서 소리속도를 340m/s로 했을 때, 17cm공간에서 2kHz의 공명이 일어난다. 그 반인 8.5cm 크기에서는 4kHz 대역의 공명이 존재한다. 문짝 하나 하나는 전부 내부 공간이 비어있기 때문에 악기 역할을 하는데, 이런 곳에서 그동안 특정 주파수 대역을 증폭시켰던 것이고, 이 부분이 해결된 것이 아닐까? 이 분석은 순전히 본인 뇌피셜이긴 하다.

  또 체감할 수 있는 건 저음역대가 오히려 잘 들리게 됐다는 것이다. 특히 60hz 이하 초저역대가 더욱 생생하게 들린다. 생생할 뿐 아니라 크게 들린다. 이건 또, 왜??? 흡음재가 저음역대의 응답 속도를 빠르게 만들어서 소리가 퍼지지 않고 깔끔하게 들리도록 만든 것이 아닐까? 하고 뇌피셜을 돌려본다. 저음역대에 존재하던 일정 주파수대역의 피크 또한 사라졌다. 전에는 프로미스9의 dm을 들으면 베이스 코드가 바뀔 때마다 음량이 다 달랐는데 (... ) 그 현상이 이제는 없다. 

  저음이 크게 들리는 이유는 중고역이 내려앉았기 때문이기도 하다. 차량 내부 eq로 중음을 올려주고 저음을 내려주니 거의 평탄한 소리가 되었다. 까랑까랑한 중고역이 사라졌기 때문에 이 부분은 좀 아쉬울 수도 있겠다.

  이게 뭐 의도한 작업은 아닐 것이다. 그저 충실하게 공명이 일어날만한 공간을 전부 흡음재로 메꿨을 뿐. 그러나 결과적으로는 쓸데없는 공명이 다 사라져서 괴상한 주파수 응답이 평탄하게 바뀌었다, 야호! 이 부분은 차마다 다를 것이라서 참고만 하시길~ 하여튼 소리가 변한다는 것.


  그리고 소소하게 달라진 점... 문 닫는 소리가 이뻐졌다... 영화관에서 듣는 것처럼 근사하게 촵!




  작업은 대구의 해온모터스에서 했다. 작업 내용을 일일이 사진으로 남겨서 설명해주는 것도 너무 친절한데, 오늘 나를 감동시킨 건 따로 있다.

 나 : 3일 동안이나 작업하시느라고 고생 많으셨네요.
 사장님 : 별 말씀을요, 재미있게 했습니다.

  쇠가 보이는 모든 곳에 패드를 붙이고, 공기가 들어있는 모든 공간을 흡음재로 메꾼다, 이 꼼꼼한 작업을 본인 차를 튜닝하는 것처럼 즐겁게 했다는 뜻... 이보다 작업에 성실한 태도가 있겠는가? 세상엔 참 다양한 사람이 많은데, 이럴 때면 또 사는 맛이 난다.


Read More

인생 첫 차를 버리면서, 그리고 두 번째 차

 




인생 첫 차를 드디어 버리게 됐다. 첫 주인은 2012년에 이 차를 샀다가 중고차매장에 넘겼고 나는 이것을 2014년에 구입해 8년을 타고다녔다.

새차는 못 타도 똥차는 안 탄다고 엄청 관리를 열심히 해서 어디 긁을 때마다 자비로 수리하고 엔진도 하부도 매우 신경써서 출고 10년이 지난 지금도 멀쩡한데 아주 가끔 스피커에 음악이 안 날 때가 있다. 여느 때면 그냥 그러려니 했을 텐데 왠지 며칠 전은 에라 차 바꿔야겠다 괜히 그런 생각이 들어서 바로 질렀다.

그렇게 애지중지 타고다니던 차였지만 폐차를 할 수 밖에 없었다. 10년된 국산 준중형 차는 상품 가치가 없단다. 아니 이렇게 멀쩡한 차가 상품 가치가 없다니. 소리도 조용하고 주행감도 이렇게 멀쩡한데? 근데 뭐 나도 안 타니까 할 말이 없다. 10년된 차는 매물이 많다고 한다. 다들 10년 쯤 되면 나처럼 바꾸나보다.

70만원에 팔린다는데 폐차하면 50만원을 준단다. 70만원에 사가는 사람도 나중에 폐차 비용 50을 챙길 테니, 실질적으로는 20만원에 사는 셈이다.  그러니까 대한민국에서 차라는 물건은 공짜나 다름없는 것이다. 유지비만 좀 들어갈 뿐. 차나 집이나 관리하고 깨끗히 쓰려니까 돈이 들어가지 그냥 버리려면 돈도 안 든다.


처음 차를 살 때는 중고차 매장에서 경차를 사려다가 당시로서는 조금 무리해서 준중형을 산 건데, 정말 그러길 잘했다. 경차였으면 회사 업무를 나갈 때도 그렇고 데이트를 할 때도 그렇고 조금 서운했을 것이다. 별로 좋은 차도 아니지만 이거 타고 다니면서 자신감을 잃은 적은 없었다.

아무런 근거도 없이는 자존감이 생기기 어렵다. 사람의 마음은 환경과 물질의 지배를 받는다 .이 차 한대라도 가지고 있었던 것이.. 그래도 내 인생에 자유를 보장해주었다.


이렇게 글을 쓰면서 올려놓은 사진을 보고 있으니까.. 역시 옛날 추억이 떠오른다. 졸음 운전으로 고꾸라졌던 생각도 나고. 빗길에서 한바퀴 반 돌았던 생각도 나고. 그러나 역시 .. 뭐.. 옆자리에  태웠던 여자 생각이 나네. 많이는 못 태웠어도, 그래도 앉혀 놓고 잼있게 놀던 시절이 있었는데.

근데.. 솔직히 다 잊어버리고 별로 생각도 안 난다. 나의 30대, 그 추억을 함께한 차가 버려지면서 기억도 같이 멀어져간다.



두 번째 차는 예전부터 가지고 싶었던 렉서스 CT200h 이다. 나는 차에 관심은 없지만, 그래도 바꾼다면 이런 차 사고 싶다고 이따금 생각했던 게 CT라서.. 근데 단종됐네? 중고 매물 올라온 거 바로 질렀다. 운전 스트레스가 워낙 심해서 큰 차는 절대 사양이고 작은 차 중에서 가장 좋다고 하는 차를 내 나름 골라두었던 것이다.

그래서 무척이나 기뻐야 하는데, 차만 있어도 행복한 시절은 지나서인지 신나는 마음보다는 걱정이 많다. 집 사는 데 보탰어야 할 금액을 또 메우려니까  그렇고. 이제는 이 정도 차 샀다고 뽐내고 자랑할 처지도 아니고. 그래도 지금이 아니면 언제 또 외제차를 사보나, 나이들면 더 못 살 텐데, 그런 생각이 드니까 비싼 건 아니라도 이 정도는 질러보자 싶더라.


나이가 들 수록 뭘 해도 행복하지가 않다. 행복은 저축이 안 된다. 그 시절에 느낄 행복은 그 시절에만 느낄 수 있다. 지금 행복한 것도 지금 뿐이니, 현재에 감사해야지.



Read More

수영 잘 해요? 멈춰! - 자살과 집단괴롭힘에 대하여

 가끔 마포대교에 설치됐었던 자살 방지 문구가 조롱의 대상이 되곤 한다.

'수영 잘 해요?'




이 문구가 상대를 조롱하는 느낌이 든다는 것이다. 


그러나 내가 생각할 때는 나쁘지 않다. 우선 자살하려는 사람들은 물에 빠지면 그 다음에 어떻게 되는지를 별로 생각하지 않는다. 그러나 물에 빠지면 춥고 물먹고 고생이 많다. '수영 잘 해요?' 문구는 이런 구체적인 상황을 떠올리게 만든다. 또한 도발을 당해서 욱 하는 심정이 든다면 그것만으로도 자살 생각을 잊게 만들 수 있다.

'뛰어봐 ㅋ 쫄보새끼'

'헬조선 경쟁자 제거www'

'하하하하하하하하하하'

이런 문구들도 다 자살하려는 사람을 도발하기 위한 것들이다.


사실 그 밖의 문구들도 그냥 문장 자체만으로 의미가 있다. 자살하려는 사람이 바로 뛰어내리지 않고 뭐라도 생각할 수 있게끔 시간을 주는 것이다. 


나도 10대 20대때는 수도 없이 자살 충동에 시달리다가 서른 살 즈음에야 자살 생각을 덜 하기 시작했다. 짧게 봐도 그렇고 길게 봐도 그렇고 자살을 막는 것은 역시 그냥 시간을 보내는 것이었다. 기왕이면 바쁘게. 20대 시절에 우울증에서 벗어난 기간이 두 번 있었는데, 한 번은 군대에 있을 때였고, 한 번은 동아리 회장으로 있던 때였다. 그 둘의 공통점은 바쁘게 할 일이 많다는 것이었다. 군대에서 너무 정신없고 바쁘니까 내가 바깥에서 왜 슬퍼했는지, 뭐가 문제였는지 잊게 되더라. 그리고 바쁘게 인생 살다 보니까 그냥 다 잊어버리게 되더라.


어쩌면 멍청해진 것일 지도 모르겠다. 자살 생각과 더불어서 감정도 메마르고 실제로 머리도 나빠졌다. 예전에는 술술 쓰던 시나 글도 지금은 잘 쓸 수 없다. 어렸을 때는 작곡을 잘 했었는데 이젠 그것도 못 하게 됐다. 말도 많이 느려지고 집중력도 떨어졌다. 우울증에 걸리면 뇌가 가진 사고력의 반절을 잃게 된다는데, 우리의 뇌는 그렇게 자기 자신을 치유하나보다.


이것 말고 자살을 막는 데 가장 큰 영향을 준 것은 종교이다. 10대와 20대를 종교적 사명으로 죽지 않고 억지로 살았다. 나 자신보다 더 중요한 것이 있다, 세상을 구원하는 일이다, 이렇게 생각하고 살았는데, 그 표본이 예수그리스도이고, 그래서 예수 따라서 산다고 하여튼 살았다. 살다 보니 살아남았다. 또한 돌이켜보면 그 때 옆에서 같이 교회다니던 친구들은 그들 나름대로 최선을 다해서 나를 돌봐주었다. 아무런 보상도 없이 나처럼 질척거리고 더러운 영혼과 말을 섞고 투정을 받아주고 감싸 안아줬던 것은 분명 종교가 아니면 할 수 없는 일이다. 종교의 위대함은 no cost에서 나온다. 아무런 댓가 없이 용서받을 수 있다.


사람들은 자살에 대해서 뭘 알기나 하고 자살 예방 문구를 조롱하는 것일까? 자살하려는 사람을 단 1주일이라도 끈질기게 설득을 해본 적이 있을까? 자살을 막는다는 게 어떤 건지 알지도 못하지. 우울과 상실의 깊이가 어떤 건지 모르지, 알 리가 없지.



한 가지 더 조롱받는 것이 있다.

'멈춰!'

주변에서 괴롭힘을 당하는 친구가 있을 때, 다같이 이렇게 외치라는 것이다.

방법이 우스꽝스러운 걸까? 아니면 그런 걸 누가 하느냐고 실효성을 말하는 것일까? 실효성은 없을 수 있다. 아무도 그렇게 하지 않을 테니까. 그럼 왜 아무도 그렇게 안 하느냐고 따져야 옳다. 방법이 잘못되진 않았다.

내가 괴롭힘을 당할 때, 반에는 세 가지 종류만 있었다. 나, 날 괴롭히는 사람, 그리고 나 괴롭힘 당하는 걸 구경하는 사람. 실제로 괴롭힘을 당할 때, 누군가 멈춰! 했더라면.. 아니면 그거 그러지 말라고 내 편을 조금이라도 들어줬다면, 괴롭힘이 아예 멈추진 않았을지라도 나는 마음의 상처를 덜을 수 있었을 것이다. 괴롭힘 당할 때 가장 큰 문제는 괴롭힘 그 자체가 아니라 세상 천지에 내 편이 없다는 것이다.


딱 한 명 기억나는 친구가 있다. 이진혁, 깜바. 내가 기억한다. 늘 그랬던 건 아니지만 내가 괴롭힘 당할 때 한 번인가 야 야 그만 좀 해라~ 한 마디 해준 거. 평생 고마워한다. 얼마나 든든했던가.

사실은 나에게도 기회가 있었다. 내 친구 손명수가 옆반 애한테 멱살이 쥐어지고 협박을 당하는데, 나는 그냥 보고만 있다가 나중에 명수야 괜찮다 라며 위로를 해줬다. 지금의 나라면 바로 주먹을 날려서 옆반 새끼를 단 한 대라도 쥐어박았을 텐데. 그렇게 했어야 했다. 왜 나는 비겁하게 구경만 했을까. 그 때는 너무 몰랐어, 사람은 때리면 안 되는 줄 알았어. 절대 다른 사람은 안 때린다고.


용기를 낸다는 게, 그렇게 어려운 일이다. 지혜도 어렵다.



Read More

XP-PEN Artist 13.3 Pro - 이거 살 바에야

 와콤 원 산다.

아니 와콤 원을 그냥 살걸 괜히 이것 저것 써본다고 다른 거 샀다가 후회만 막심하다.


와콤 원과 비교하여 리뷰를 써 본다.


XP-PEN의 장점은 전면에 달린 인터페이스다.

그리고 옆면에 달린 밝기 조절 버튼이다.

그리고 펜이 2버튼이다.

그리고 가격이 더 싸다.


단점은?

1. 화질 - 일반 모니터에 비해 완전히 떨어지는 색표현력을 가지고 있다. 딱 켜자마자 느껴지는 우중충함... 이에 반해 와콤 원은 LG노트북급 화질이다. 비교해봐도 전혀 나쁘지 않다.

2. 펜 - Artist 13.3의 펜은 굵기가 굵고 펜촉이 길다. 펜촉이 길어서 보는 것과 쓰는 것과의 차이가 종종 느껴진다. 가장 큰 단점은 펜촉이 흔들린다는 것이다! 그래서 펜은 열심히 움직이는데 글씨가 제자리에서 안 움직인다.

3. 베젤 크기 - 스마트폰 베젤에 익숙해져 있다가 와콤 원 보고 이게 웬 떡대냐 하고 깜짝 놀랐는데... Artist13.3은 한술 더 뜬다. 생각해보면 어느 정도 베젤 크기가 있어야 화면 외곽에 글씨를 쓸 때 편하긴 하다. 그래도 좀 심했다.

4. 지우개 - 지우개 버튼이 푸시 푸시 토글 방식이다... 이에 비해 와콤 원은 누르면 지우개 떼면 펜. 와콤쪽이 더 편하지.


모든 단점 중에 확실히 XP-PEN 못 쓰겠다고 생각한 부부은 역시 펜촉의 흔들림이다. 화질이고 뭐고는 다 참을 수 있어도 글씨가 제대로 안 써지니까 도저히 참을 수 없다...


와콤원에 대한 본인 리뷰는 여기..

https://ladofa.blogspot.com/2020/12/wacom-one.html

Read More

140Hz~150Hz 부밍의 원인은 천장이다

집에서 강의를 하는 일이 많고, 또 지방 여기저기 돌아다니는 일이 많은 나로서는
이사할 때마다 해당 장소의 사운드 셋팅에 민감하다.

어느날, 특정한 오피스텔에서 이상하게 145Hz 대역이 붕붕 울리는 것이다.
정확하게는 144Hz가 가장 크게 울리고 그 근방을 +-5 정도 부밍이 일어난다.

그래서 커튼도 설치하고 방음 캡도 설치하고 별의 별 난리를 다 피웠는데 답이 없다.

혹시나 해서 145hz 부밍이라고 검색했더니 결과가 엄청 많네 ㅋㅋㅋ 다들 비슷한 고민을 하나보다.

정답은 천장이었다.

음속 343m/s, 1초에 343미터를 간다. 이것을 144hz로 나누면 2.38m
144hz 파장의 길이가 2.38m인 것이다.
대한민국 천장 표준 높이가 2.4이다. 내장재 조금 보태면 2.38 쯤 나온다.
실제로 집에서 재보니 높이가 일치하여
사인파를 틀어놓고 천장을 만지니까 진동이 엄청 느껴진다.
그래서 인터넷에서 다들 140~150 사이의 부밍을 호소했던 것이다.
대체로 천장 높이가 그 정도 되기 때문에.

방 안에서도 위치에 따라 달라지는데
천장에 에어컨이 달려있는 쪽은 부밍이 없다.



반면에 구석쪽은 음악을 트는 게 아니라 그냥 말을 하다가도 귀에 거슬릴 정도.



근데 천장을 어떻게 한다..? 바닥에 카펫이라도 깔아놓으면 나아지려나 싶어서 바닥을 엉망진창으로 만들어놓고 테스트해도 여전하다. 천장에 흡음재를 바르지 않는 이상 답이 없다.

혹시 다른 결론에 다다르신 분들은 댓글 바람..




Read More

할머니 생각하며 작사한 것

파일을 정리하다 발견했다. 이게 몇년 전이냐. 코딩하다가 갑자기 딴 생각이 들어서 작사나 해본다고 할머니를 생각하며 만든 가사인데. 전국 노래자랑이라도 우리 동네 오면 불러볼까 하고 만들었다. 근데 ㅋㅋㅋ 사실 왔었는데 내가 몰랐지. 나한테 왜 얘기도 안 하고 왔을까.

둘째 며느리라고 되어있는데 사실은 둘째 부인이다...


 ################################################

# 우리 할머니 둘째 며느리로 시집와서

# 아흔이 넘도록 고생만 하셨소

# 일곱자식 도시락을 싸느라고 소풀을 뜯느라고

# 시아버지는 방에서 꼼짝도 안하고 반찬 투정만 한다고

# 몸이 열 개라도 모자란데 어린 아버지가 칭얼댈 때

# 우리 아버지를 그렇게 때렸다고 때리기만 해서 미안하다고


# 할머니는 걱정이 너무 많구랴

# 겨울에는 여름 걱정 여름에는 겨울 걱정

# 나가도 걱정 들어와도 걱정

# 그놈의 자식 걱정에 재미라도 들리셨소

# 기어코 마지막 하는 소리가 겨우 추워서 어떻햐

# 나 출근하는 길 걱정하는 소리였소


# 그러다 큰일난다 죄다 말려도

# 할머니 고향에 내 기어코 모시고 갔지요

# 옛날에는 여기가 전부 논밭이었다며

# 아직도 할아버지 친구 자식들 그대로 산다며

# 할머니는 어디 살았나요 물어보니

# 몰라~


# 조상 잘 모시면 자손들 잘 살게 도와준다는데

# 할머니가 나를 잘 살게 해준다고?

# 하이고 됐소 마 할매나 잘 사시오



Read More

WPF .Net 5 이미지 보이지 않을 때 (리소스 추가)

닷넷 프레임워크에서는 프로젝트에 이미지를 포함시키면 자동으로 리소스에 추가가 됐다. 그런데 닷넷 5로 넘어오면서 이미지 리소스를 직접 추가해줘야 한다.



<ItemGroup>

<Resource Include="Images/hat.png" />

<Resource Include="Images/arrow.png" />

<Resource Include="Images/pen.png" />

<Resource Include="Images/eraser.png" />

<Resource Include="Images/clear.png" />

<Resource Include="Images/overlay.png" />

<Resource Include="Images/setting.png" />

<Resource Include="Images/exit.png" />

<Resource Include="Images/info.png" />

</ItemGroup>


솔루션 익스플로러에서 프로젝트를 더블클릭하면 xml 문서가 보인다.

여기에 위와 같이 추가하면 된다.


그래도 안 보이면 솔루션을 다시 빌드한다. 상단메뉴 [빌드] -> [솔루션 정리] 후 다시 실행.



그리고 코드 비하인드에서 동적으로 상대경로 이미지가 나타나지 않을때, https://ladofa.blogspot.com/2024/03/wpf-relative-image-path-problem.html 여기 참조.



Read More

강의용 마이크 추천 + 온/오프라인 셋팅


온라인 강의에서 음향은 정말 중요하다. 수강생은 최소 한시간에서 길게는 100시간 이상 강사의 목소리를 들어야 하므로 음질이 귀의 피로에 영향을 준다. 

강사 입장에서는 최대한 저렴하면서도 편리하게 환경을 꾸며야 하는데, 선택지가 너무 너무 너무 많다. 이 글은 3년 정도 강의를 하면서 나름 음악 애호가로서 여러 가지 마이크를 써보고 경험담을 정리한 것이다. 

1. 

우선 초보자로서 가장 걱정되는 부분은 셋팅 그 자체일 것이다. 컴퓨터와 연결이 잘 되는지, 아무 마이크나 사도 컴퓨터에 다 꽂을 수 있는지? 이 부분에 대해서 얘기해본다.

마이크는 다음과 같이 나뉠 수 있다.

1. 컴퓨터에 USB 직접 연결 가능
 - 가격대는 3만원쯤에서 50만원 정도이다. 저렴한 모델부터 전문가용 모델까지 다양하다.
 - 주로 콘덴서 마이크 / 구즈넥형태
 -  대표모델 : Shure SM7, AKG Lyra, RODE NT-USB


 - 컴퓨터에 연결하고 나면 줌에서 아래 마이크 목록에 뜰 것이다. 오디오 인터페이스를 연결해도 마찬가지로 목록에 나타난다.






2. 컴퓨터 뒤의 33미리 마이크잭에 바로 꽂을 수 있는 마이크 (3극, 요즘은 보기 어려움)
 - 게이머용 헤드셋 마이크가 이런 형태로 많이 나왔었다. 컴퓨터 뒤에 빨간색 초록색 꽂는..

3. 4극 연결이 필요한 마이크
 - 주로 스마트폰이나 카메라에 연결하여 야외 수음용으로 쓴다.


--------- 여기서부터는 컴퓨터 연결 시 오디오 인터페이스 필요 ---------------
일반적인 음향 설비에서 쓰는 마이크들이 여기에 포함된다.
오인페는 세상의 어떤 마이크든지 컴퓨터와 연결할 수 있도록 해준다.
앰프/프리앰프 차이가 있는데 설명하기 귀찮으니 통과.. 알아서 뭐함

4. 따로 앰프가 필요한 다이나믹 마이크
 - 다이나믹 마이크는 대체로 공연용이나 악기 수음용
 - 잡음에 강하고 충격에 강함. 시끄러운 환경에서는 굳이 콘덴서를 고집할 필요가 없음.
 - 대체로 소리가 단단하고 매끄럽게 잡힘

5. 앰프와 팬텀 파워(48V)가 필요한 콘덴서/튜브 마이크
 - 무난한 선택이 될 수 있다. 콘덴서는 보컬과 스피치를 위한 마이크이기 때문.
 - 좋은 마이크는 작은 디테일과 질감까지 완벽히 캐치해낸다.

4번 5번은 주로 XLR이라는 연결 형태를 쓴다. 아래 사진처럼 점 3개가 박혀있음.


6. 각종 이상한 연결 방식과 특이한 전원이 필요한 마이크 (주로 이어셋, 공연용)
 - 기본적으로 무선 연결을 생각하여 만들어진다.
 - 저전력/소형화 되어 전용 프리앰프와 전용 연결이 필요하다.
 - 팬텀 파워(48V) 공급하면 회로가 타버림. 대게 2V~10V 공급인데 제품마다 다름.

2. 

어떤 마이크가 좋은 마이크인가?

본격적으로 마이크를 고르기 전에 강의를 위한 마이크 혹은 마이크+음향셋팅으로서 갖춰야 할 조건은 다음과 같다.

1. 잡음/하울링
재택근무시 각종 생활 소음을 걸러낼 수 있어야 하며 스피커로 수강생들의 소리를 들으면서 강의하는 경우 하울링을 잘 컨트롤할 수 있어야 한다. 때문에 무지향성(모든 방향에서 수음)보다는 단일지향성(한 방향에서만 수음)이 좋다.

2. 뮤트기능
강의 중에 원치 않는 소음이 발생할 경우 빠르게 음소거가 가능해야 한다.

3. 자리차지
마이크가 강의에 거슬려서는 안 될 것이다.

여기까지는 필수이고 그 밖에 있으면 좋은 기능

4. 컴프레서
컴프레서는 큰 소리를 작게 해주고 작은 소리를 크게 해줘서 일정한 볼륨이 되도록 만든다. 사람은 한 문장을 이야기할 때도 시시각각 목소리 크기가 변하는데 이것들을 일정하게 잡아줄 수 있다. 특히 치찰음 발생하거나 갑자기 크게 웃을 때 레벨이 급격히 변하는 것을 감쇄시킬 수 있다. 유튜브 수준 이상의 방송에서는 필수품이다.

5. 로우컷/기타 EQ
지향성 마이크의 경우 마이크에 입을 가까이 가져가면 저음이 비정상적으로 커진다. 이를 막기 위해 저음을 차단하는 필터를 쓴다. 그 밖에 EQ로 주파수별 레벨을 조정할 수 있으면 금상첨화.



 마이크는 그냥 비쌀 수록 음질이 좋다. 10-15만원 선까지는 일반인이라도 음질의 차이를 느낀다. 그 이상부터는 블라인드 테스트를 통과하기 점점 어려워진다. 특히 줌을 사용하는 경우 암만 좋은 마이크를 써도 음질이 다 똑같다.

음질을 결정하는 부분은 마이크보다 EQ와 하울링/노이즈이다. 저음과 고음의 밸런스가 잘 맞아야 좋은 소리로 들린다. 그러니 마이크에 너무 욕심낼 필요는 없다.


3. 

마이크 스펙 이해하기. 마이크에 줄줄이 써 있는 스펙이 무슨 뜻인가?

스펙에서 살펴봐야 할 중요한 부분은 우선 지향성과 파워이다.



지향성은 Polar Pattern이라고 하는데, 한쪽 방향으로만 소리를 잡을 것인지, 360방향으로 소리를 잡을 것인지를 말한다. 일반적인 보컬용 마이크는 단일 지향성(Cardioid)로서 한쪽 방향으로만 소리를 잡는다. 무지향성(Onmidirectional)은 모든 방향에서 소리를 잡는다. 대체로는 단일 지향성으로 고르면 된다.

지향성 마이크의 특징 한 가지만 짚고 넘어가자. 지향성 마이크는 거리가 가까울 수록 저음이 심하게 들리고, 멀어질 수록 저음이 안 들리는 특징이 있다. 입을 마이크에 붙여서 말한다면 저음을 깎아야 한다. 그리고 일정한 거리를 유지하는 것이 일관된 소리를 전달하는데 좋다.

파워는 전원 공급으로서 USB 직접 연결 기기는 신경쓸 필요가 없다. 앰프(오인페)가 필요한 마이크를 살펴본다면... 파워가 필요없는 passive(주로 다이내믹), 48V 팬텀 파워가 필요한 마이크(주로 콘덴서)이다. 시중에 있는 모든 오인페는 팬텀 파워를 지원해주므로 여기까지는 걱정할 필요가 없다.

아래 스펙을 보면 Polar Pattern은 Cardioid, 지향성이다. Power Requirements 는 11-52V 인데, 48V가 포함되어 있으면 일반적인 팬텀 파워이므로 안심하고 구매하면 된다.


문제는 제 3의 마이크로서 기타 이상한 파워가 필요한 마이크(주로 이어셋)가 있다. 이것은 아래에 설명한다...

4. 

마이크를 형태별로 정리해본다.

1. 구즈넥 
저렴한 USB연결 마이크 : PLEOMAX PLM-401U, CMP-3000U (비싸봐야 5만원)
본격적인 구즈넥 마이크 : AKG CGN 시리즈, 슈어 CVG
강의장에서 가장 많이 볼 수 있는 마이크이다. 애초에 책상 위에서 스피치를 하기 위해 설계되었다. 스피치 용도로 중음역대가 강조되어 있기 때문에 강의 외 보컬 등 용도로는 절대 쓸 수 없다. 구즈넥마이크는 대체로 단일지향성인 데다가 입에 가까이 대는 형태라서 왠만한 생활 잡음은 막을 수 있다. 음소거 버튼을 대부분 탑재하고 있어서 사용하기 좋다. 별 다른 고민이나 욕심이 없다면 가장 무난한 선택이라고 본다.

구즈넥은 책상에 설치해야 되기 때문에 스탠드를 따로 구매해야 하는데, 오인페로 대신할 수도 있다...


2. 핀마이크
대표모델 : ORDE Smartlav+(10만원), BY-M3 (4만원)
많은 유튜버들이 핀마이크를 사용하는데 직접 다뤄보면 실망감이 클 것이다. 핀마이크는 무지향성이기 때문에 잡음에 매우 민감하고, 입과의 거리가 멀기 때문에 반드시 EQ를 보정해줘야 한다. 만약 핀마이크를 쓴다면 최대한 입과 가까운 위치에 달아야 한다. 또한 음향 왜곡을 EQ로 잡아줄 수 없다면 사지 말아야 한다.
핀마이크는 대체로 뮤트 기능이 없는 것도 문제이다.


3. 핸드헬드 마이크
손으로 잡아야 하는 노래방 마이크들이다. 대부분 다이내믹 마이크인데, 손으로 잡다가 떨어지거나 던질(?) 수도 있고 습기가 찰 수도 있기 때문에 내구성이 아주 좋게 만들어져 있다. 
강의 용도로 쓰려면 손으로 계속 들고 말하거나 전용 스탠드가 필요하다. 책상 위에 스탠드를 설치한다면 그 크기때문에 조금 불편할테지만 음질은 의외로 만족할 것이다. 다이내믹의 특성상 잡소리 없는 깨끗하고 단단한 소리를 들려주기 때문이다.


3. 콘덴서 마이크
대부분의 유튜브 방송, 그리고 녹음에서 쓰이는 마이크이며, 아주 많은 종류, 다양한 선택지가 있다. 어쩌면 가장 많이 보는 마이크이기 때문에 이 쪽으로 선택하기 쉽다. 그러나 강의용으로 100% 좋다고 생각하지는 않는다. 

책상에 스탠드를 놓거나 아니면 외부에 스탠드를 둬야 하는데 공간을 상당히 많이 차지한다. 번잡하게 모니터와 기타 잡기가 놓여있는 책상이라면 생각을 좀 해봐야 한다.

콘덴서 마이크의 최종 목표란 목소리가 가지고 있는 뉘앙스와 디테일을 선명하게 잘 표현하는 것인데, 이게 과연 강의용으로 적합한지 모르겠다.  깨끗한 환경의 녹음실이나 스튜디오에서는 문제가 없겠지만, 컴퓨터 팬이 돌아가고 가습기가 돌아가는 상황에서 콘덴서마이크는 오히려 독이 될 수 있다. 그래서 ZOOM 자체적으로 노이즈 필터가 들어가게 되고, 이게 음질을 심각하게 저하시키면서 콘덴서를 쓰는 이유가 없어진다...

USB 연결 마이크를 사용한다면 뮤트를 어떻게 할 지 생각해봐야 한다. 오인페를 사용하면 얼마든지 갑작스런 상황에서 뮤트를 걸 수 있지만 USB연결 마이크는 뮤트가 불가능하다. 이럴 때는 ZOOM의 음소거 단축키를 Global로 셋팅하여 미리 연습을 해봐야 한다.



5.


추천하는 조합을 소개한다.

이도 저도 고민하기 싫다면 그냥 이거 사라.

1. 오인페 두 가지 추천한다.
아리스노보umb-mix2
     - 일단 싸다 (6만원)
     - 직관적인 사용법 (이상한 프로그램 같은 거 안 깐다! 무설치 사용!)
     - 필요한 필수적인 기능은 있다. (RCA, 3.3m 출력, 2채널 EQ)
야마하 AG03
     - 전문가 수준의 Equalizer (외부 버튼 없이 전용 프로그램으로 조정함)
     - 컴프레서 내장(이게 개꿀), 리버브 이펙트 내장 
     - 가격은 23만원 정도

추천하는 오인페 둘 다 구즈넥 마이크의 스탠드로 쓸 수 있어서 스탠드를 따로 구매하지 않아도 된다!

2. 구즈넥 마이크
AKG CGN99 C/L 30cm (20만원)
      - ZOOM으로 낼 수 있는 최대치의 성능, 이 이상은 큰 의미 없는 듯. 녹강 만들 때 써도 무리없는 좋은 음질. 특유의 맛을 추구하지만 않는다면 공학적으로는 여기가 최고의 음질일 것이다.
      - CL 말고 HS모델이 있는데 이건 하이퍼 카디오이드라고 해서 수음 각도가 엄청 좁다.
      - 노이즈 차단에는 좋겠지만 조금만 움직여도 수음이 잘 안 되서 불편할 듯.(내 경험 ㅜㅜ)
      - 30cm는 좀 짧은 것 같겠지만 50cm는 너무 길다.

베링거 TA 312S (6만원)
      - 뛰어난 가성비!
      - 다이내믹 마이크 특유의 깔끔하고 정제된 소리, 오래 들어도 부담이 없지만 약간 밋밋한..



이건 본인이 쓰는 상황. 구즈넥 스탠드 대용으로 오인페를 쓰면 된다. 손 닿는 곳에 노브가 있기 때문에 급하게 뮤트할 때 좋다.


3. 이어셋 마이크
본인이 강의할 때 움직임이 크다면 이어셋 마이크를 고려해볼 수 있다. 이어셋 마이크는 오인페에 바로 연결이 안 되고 프리앰프라는 장치가 필요하다. 대부분의 이어셋 마이크는 필요 전원이 2-10V 정도로 미약한데, 여기에 바로 팬텀 파워(48V)를 넣으면 회로가 다 타버린다. 그리고 만들어내는 소리의 크기도 매우 작기 때문에 소리를 미리 증폭시키는 용도 + 전원 공급 용도로 프리앰프가 필요한 것이다.

그리고 연결 방법도 매우 다양한데, 마이크 회사마다 제각기 다른 연결을 쓴다.
대표적으로는 Hirose라고 하는 연결과 Shure 4핀 연결, MINI XLR 등이 있다. 대략 10여가지가 넘으므로 면밀히 잘 검토해야 한다.

추천하는 제품은 다음과 같다.

SM35-XLR (25만원)
 - 슈어사의  제품으로서 TQG 모델은 미니4핀 연결인데 반해 XLR 모델은 바로 오인페+펜텀파워에 꽂을 수 있도록 되어 있다. 사실은 TQG모델 + 프리앰프 회로를 합쳐서 셋트로 파는 것이다. 그러므로 사진 아래쪽에 있는 뚱뚱이가 포함되는지 꼭 확인한다.
 - 사용 후기로는.. 좀 무게운 게 흠이다. 착용감은 확실히 좀 안 좋다.
 - 이어셋으로는 드물게 지향성이다. 노이즈에 매우 강하기 때문에 도때기 시장이나 마트 할인 매장에서 쓰라고 만든 제품이다. 드럼치면서 노래부르는 사람들이 이 제품을 쓴다더라.


디보이스 em-02d3 (프리앰프 합쳐 가격 6만원)
 - 쿠팡에서 로켓배송으로 판다. 포인트소스 마이크랑 다 사봤는데 가격은 10배 차이나면서도 음질은 그게 그거다... 설마 그럴리가? 싶어서 진짜 열심히 들어봤는데 프리앰프를 디보이스걸로 써서 그런지 진짜 비슷하더라.
 - 디보이스로 검색해보면 프리 앰프도 판다(디보이스 ppa-1). 둘 다 사서 잘 연결하면 된다. 
 - 무지향성이기 때문에 노이즈에 민감할 것 같지만 마이크 자체의 수음력이 상당히 떨어져서 너무 큰 걱정은 안 해도 된다. 입에 가까이 붙여놓기 때문에 무지향성이어도 되는 것이다. 그래도 주변 소리 다 들리긴 함.
 - EQ를 필수적으로 적용해야 한다. 중음역대만 많이 잡히기 때문에 저음을 많이 올리고 고음도 살짝 올리는 것이 좋다.


4. USB마이크
여기서부터는 오인페가 필요 없다.

RODE NT USB MINI 컴팩트
 - RODE사의 제품은 대체로 가성비가 뛰어나다.
 - 작기 때문에 공간을 많이 차지하지 않는다.
 - 앞에있는 노브는 이어폰 연결 볼륨으로 마이크랑 상관없다.
 - 음질은 수음 거리에 달렸다. 너무 멀리 두면 곤란하다. 최대한 가까이 둔다. 거리만 확보되면 만족도 높은 음질을 제공한다.

그 밖에 30만원이 넘는 제품들은 다 좋다. 사용하는데 주의사항도 위의 내용과 비슷하다. RODE NT-USB 라든지, MV7이라든지... 무난한 선택이 될 것이다.

5만원대  USB 연결 가능한 구즈넥 마이크는 어떤가? 수강생들이 바로 느낄 정도의 음질 차이가 난다. 뭐 못 들어줄 정도는 아니고 별로 신경 안 쓴다면 나쁘지 않다. 좋은 점은 뮤트 버튼이 스탠드에 달려있다는 것이다. 빨간색 불도 들어와서 이쁘다... 

6.

기타 팁을 적어보고자 한다.

줌으로 강의할 경우 기본적으로 잡음 제거 필터가 들어간다. 이것이 들어가고 안 들어가고는 음질에 엄청 큰 영향을 미친다. 
줌에서 이 기능을 끄려면 'Original Sound 버튼 보이기' 옵션을 설정한 뒤에 미팅창 왼쪽 위에서 Original Sound On을 설정하면 된다. 만약 약간의 노이즈를 제거하고 싶다면 노이즈 제거 옵션에서 Low를 선택하는 것도 방법이다.



근데 Orignal Sournd 옵션을 켜도 직접 녹음하는 소리랑은 분명 다르다. 통신환경에 따라 어쩔 수 없이 손실 압축이 되는 듯 하다. 감도 좋은 마이크 사봐야 소용없다.

최종적으로 자신의 목소리를 확인하려면 녹화 기능을 이용한다.



7.


온/오프라인 동시 강의를 할 경우 어떻게 하나?

1. 우선 평소 하던대로 오인페로 컴퓨터와 연결하고 마이크 셋팅을 마친다.

2. 오인페에 보면 출력 단자가 있다. 이것을 강의장의 믹서에 연결하면 된다. 강의장 믹서는 대부분 55잭 아니면 XLR을 입력으로 받을 것이다. 오인페의 출력과 강의장 믹서의 입력을 서로 변환해주는 잭이 있으면 좋다.

예를 들어 아리스노보 MIX2나 대부분의 USB마이크는 3.3mm 스테레오 출력을 지원한다. 이것을 55잭으로 바꾸려면 요런 라인이 필요할 것이다.






아니면 RCA출력을 바로 55mm로 바꿀 수 있는 요런 케이블도 좋다.





믹서에 보면 빨간색 네모처럼 스테레오 입력을 받을 수 있는 곳이 있다. 물론 모노도 상관은 없다. 모노를 쓰려면 LEFT 신호만 사용하면 된다. (빨간색 말고 흰색/검은색)


또 다른 방법은 강의장에 있는 믹서를 직접 활용하는 것이다. 요즘 나오는 대부분의 믹서는 오인페의 역할을 할 수 있다. 믹서를 살펴보면 USB를 연결하는 곳이 반드시 있다. 이걸 컴퓨터에 연결하면 소리를 받아올 수 있다. 심지어는 컴퓨터에서 소리를 보낼 수도 있다. 그러면 이 때부터는 원래 하던대로 강의장에 있는 마이크 시스템을 쓰고 그 소리를 컴퓨터-ZOOM으로 보내면 그만이다.

만약에 준비된 설비가 없는 곳이라면? 설비가 없는 곳에서 쓰라고 이상한 무선 마이크 + 스피커 세트를 파는데, 이거 음질이 매우 안 좋다. 마이크 음질 안 좋음 + 스피커 음질 안 좋음이 놀라운 시너지를 일으킨다.

이럴 때는 그냥 만만한 컴퓨터 스피커 + 오인페의 조합이면 된다. 너무 음질이 좋아봐야 소용없고 5-6만원데 북쉐프 스피커면 적절하다. 


예를 들면 이런 거.


Read More

핸즈온 머신러닝 2판 - 풀스택 인공지능 개발자를 위하여



오렐리앙 제롱 지음

박해선 옮김

rickiepark/handson-ml2: 핸즈온 머신러닝 2/E의 주피터 노트북 (github.com)


내가 강의할 때 쓰는 책이다. 먼저 강의 용도로 말하자면 120시간 강의를 해도 다 설명하지 못할 정도로 내용이 방대하기 때문에 시간 걱정할 필요가 없다는 게 장점이다. 책에 있는 내용 전부 다 코랩에서 실행 가능하고, 소스 코드를 전부 깃허브로 오픈했기 때문에 수강생들이 공부하기도 편하다.

딥러닝에 대한 학문 체계를 살펴보면 인공지능 > 패턴인식 > 머신러닝 > 신경망 > 딥러닝 순으로 되어 있다. 여기서 골치아픈 통계와 확률을 다루는 패턴인식은 건너뛰고 현실적으로 딥러닝에 쓰일만한 요소들만 모아서 머신러닝을 설명한다. 그리고 고전이라고 할 수 있는 SVM, 앙상블, 클러스터링, PCA 를 소개하고 딥러닝으로 넘어간다. 딥러닝 파트에서는 텐서플로우-케라스를 기반으로 하여 영상처리, 시계열처리, 인코더-GAN, 강화학습 까지 충분한 범위의 주제들을 고루 다루고 있다. 

이 책은 풀스택 개발자에게 좋다. 여기서 풀스택이란 연구에서부터 응용개발까지 아우른다는 뜻이다. 단순 사용자가 아닌 연구자를 위해 머신러닝의 기본 개념에서부터 차근차근 설명하는 책이며 나름 골치아픈 수식과 그림이 등장한다. 소스코드도 단순 사용자를 위한 것이 아니기 때문에 API 사용법을 친절하게 보여주는 것이 아니라 원하는 연구 방향대로 커스터마이징을 할 수 있도록 상당한 수준의 로우 레벨까지 커버한다.

저자는 어떻게든 방대한 머신러닝과 딥러닝의 세계를 한 권의 책, 900여 페이지에 담아보려 했다. 다양한 내용을 담고 있다보니 개별 항목에서는 다소 불친절한 부부이 있다. 기본적인 수학적 사고와 바탕은 갖추어야 혼자서 공부가 수월할 것이다. 기초적인 선형대는 할 줄 알아야 하고, 넘파이는 좀 해야 한다. 판다스는 몰라도 큰 지장이 없다.  이런 류의 책은 처음부터 끝까지 다 이해하기는 좀 어렵다. 그러나 소스를 실행해보면서 천천히 발을 담궈보기에는 매우 좋다. 누군가는 이렇게 말했다, '어려운 내용은 없다, 어려운 설명이 있을 뿐이다'. 그러나 나는 이렇게 말하고 싶다, '나의 부족함을 가지고 저자에게 화풀이하지 말라'. 이해할 수 있는 만큼만 이해하고 나머지는 내버려둔다 해도 책은 책으로서의 가치를 다 한 것이다.

기초가 부족한 사람들은 깃허브에 올려진 추가 내용을 보면 좋다. 넘파이와 판다스를 집중 공부할 수 있는 예제가 실려있다. 심지어는 자동미분에 대한 내용도 보충설명이 되어 있다. 

박해선 선생님이 책을 번역한 것도 모자라서 깃허브 소스코드도 번역해놨다. (2판 추가 부분은 번역이 안 되어 있음) 직접 촬영해주신 강의 동영상도 있다. 공부하기 너무 좋다.


Read More

천진봉평막국수 - 밸런스와 커스터마이징

 




고성에 막국수로 유명한 집 거기가 있긴 한데 웨이팅도 길고 해서 아무데나 간 곳이 천진봉평막국수.

가게는 겉으로 보면 김밥천국마냥 매우 평범하고 깔끔한 모양새. 어디 수려한 자연 속 가든이 아니라 그냥 길가에 있는 식당이기 때문에 분위기 있는 곳은 아니다.

자고로 막국수란 만능양념이라고 할 수 있는 초고추장을 베이스로 하여 짠맛, 단맛, 신맛, 매운맛이 모두 결합된 단짠매신의 음식이다. 거기다 고기육수까지 들어가기 때문에 무슨 놈의 맛이라도 어떻게든 맛이란 것이 나기 마련이며, 면의 식감만 나쁘지 않다면 어딜 가든 평타는 하는 음식이다. 그럼에도 너무 싱겁다든지, 너무 짜다든지 너무 달다든지 맵다든지 하여 균형을 잃고 입맛 버리는 막국수가 한 둘이 아니다. 여기 막국수는 매우 균형잡힌 과하지도 모자라지도 않은 배합에 달달한 육수 + 김을 추가하여 훌륭한 맛을 보여준다. 비빔막국수를 시켰는데 얼음육수를 같이 주기 때문에 원한다면 물냉처럼 먹을 수도 있고 양념맛을 싱겁게 해주는 효과도 있다. 반대로 더 강한 맛을 원하다면 상에 차려진 겨자, 매운양념, 설탕을 이용하여 얼마든지 좋아하는 맛으로 변경 가능. 즉, 훌륭한 베이스에 다채로운 커스터마이징이 가능하다 하겠다. 추가 양념을 두는 것에 모자라서 설탕까지 준비해둔다는 것은 전국 각지에서 몰려오는 강원도 관광객들의 다채로운 팔도입맛을 모두 커버하려는 사장님의 결연한 의지가 아닐까 싶다.

그리고 국수 양도 충분해서 배부르고 든든한 식사가 가능하다. 사이드를 시킬 경우 너무 억지로 다 먹지 말자.

만두는 그냥 평범하게 맛있고, 수육은 매우 부드럽다. 할머니 할아버지들이 좋아하는 부들부들한 고기. 고기향과 허브향이 잘 배합되어 이상적인 밸런스를 보여준다.

쌈채소로 어린 양배추가 나왔는데 이거는 계절마다 다를 수도 있겠다.


위치는 강원도 고성군 어딘가... 에 있겠지 뭐.



Read More

GE250 - 좋은 소리, 풍부한 기능, 애매한 사용성

 




GE250은 GE300보다는 낮고 기타 GE150, GE200보다는 높은 등급의 멀티이펙터이다. 간단히 몇 가지 앰프 시뮬에 쓸만한 톤을 원하는 사람들은 GE150같은 걸 사고 250이나 300을 살 바에야 더 높은 하이엔드로 가기 때문에 300도 아닌 250은 상당히 애매한 위치에 있다. 너무 비싼 건 그렇지만 톤 시뮬레이터와 다양한 사운드를 맛보고 싶은 사람들에게는 딱 적당하다고 할 수 있다.

멀티이펙터로서 소리 자체는 훌륭하다. 사실 요즘 세대의 대부분의 멀티 이펙터는 옛날에 비해 일취월장한 사운드를 보여주며 세밀한 톤 컨트롤이 필요없다면 왠만한 공연/녹음을 다 커버할 수준이 된다.

박자를 알아서 맞춰주는 긴 시간의 루프를 제공하고, 메트로놈, 드럼 비트도 제공되기 때문에 방구석에서 혼자 연습하기는 딱이다. 

GE250 이 제품의 가장 큰 문제는 바로 사용성이다. 단 하나의 노브로 모든 것을 컨트롤해야 하는데, 마치 vi 에디터를 쓰듯이 커서를 옮긴 뒤 클릭, 값을 바꾼 뒤 클릭, 다시 커서 옮기기를 반복해야 한다. 최소한 커서 위치를 옮기는 노브 하나만 더 달았어도 이렇게 불편하지는 않을 것이다.

그런데 사용하기 힘들다는 것이지 어렵다는 뜻이 아니다. 사용하기 어려운 것과 불편한 것은 다르다. 개별 스톰프를 포함해서 매우 많은 외장 버튼을 달고 있기 때문에 원하는 기능을 손쉽게 찾을 수 있다. 다만 기존 프리셋을 수정하는데 노가다가 필요하다는 것 뿐이다.

그 밖에 세밀한 부분에서도 아쉬움이 많이 남는다. 페이지당 3개의 톤이 할당되어 있는데 최소 5개 이상씩 묶었어야 페이지를 무한히 넘기는 수고를 덜을 수 있을 것이다. 버튼 밑에 달린 조명도 과도하게 밝아서 어두운 공간에서 눈이 아플 지경인데 조절이 불가능하다. 디스플레이 UI를 보면 저게 과연 최선인가? 싶을 정도로 UI 디자인이 엉망이다. 전문 디자이너 없이 뚝딱 만들어낸 결과가 아닌가.

아이폰이 통화 잘 되고 카메라 잘 찍힌다고 아이폰이 되는 게 아니다. 편리한 사용성과 유려한 UI가 합쳐져서 제품의 아이덴티티가 된다. VAIO 노트북, 삼성 갤럭시, 그 외 우리가 인정하는 수많은 기기들은 자신만의 색깔과 철학이 있다. GE250은 과연 어떤 멀티이펙터인가.

쉽고 기능 많은 멀티이펙터는 맞지만 완성도가 아쉽다.


Read More

와콤 원(WACOM ONE) - 온라인 강의에 액정태블릿은 필수품

와콤 원은 와콤사에서 출시한 다양한 모델 중 가장 밑바닥에 있는 모델로서 정확한 색감이나 표현력은 포기한 대신 저렴한 가격과 튼튼한 하드웨어, 캐쥬얼한 사용성을 내세운 제품이다. 저렴한 가격이라고? 그렇다. 전문가용 액정 태블릿은 수백만원 하는 대신 고작 40만원대에서 구입할 수 있으니까.

글을 쓰는 본인은 태블릿 전문가가 아니기 때문에 다른 제품과 비교한 장단점을 서술하기는 어렵고, 다만 태블릿을 처음 써보려고 하는 초보자들 입장에서 태블릿의 특징 + 와콤 원의 특징을 나열해보고, 특히 강사 입장에서 사용한 경험을 서술하려 한다.

1. 액정태블릿은 추가 모니터다.

모니터를 한대 더 추가한다고 생각하면 된다. 메인 모니터와 동기화해도 되고 제 2의 작업 영역으로 확장해도 된다.

만약 메인 모니터가 16:9가 아닌데 동기화를 한다면 태블릿에서는 여백이 보이게 된다. 이 상태에서 펜 위치와 포인터 위치가 안 맞는다면 드라이버에서 정렬 프로그램을 실행한다.

2. 전용 프로그램이 필요하다.

드라이버를 설치해야 제대로 작동이 된다. 즉 들고 다니면서 다른 컴퓨터 아무데나 꽂아서 쓰기에는 불편하다.

2. 연결 단자가 많다.

일단 컴퓨터에는 USB와 HDMI를 같이 꽂아야 한다.
전원도 USB로 공급받기 때문에 별도의 전원 설치가 귀챃으면 그것도 컴퓨터에 꽂아도 된다. 하지만 밝기를 강하게 유지하려면 전기가 많이 들기 때문에 콘덴서에 꽂는 것을 추천. 220v 콘덴서 단자도 같이 제공해준다.

3. 화질은 그저 그렇다.

일단 RGB24bit를 다 표현하지 못한다. 평소에는 모르겠지만 그라데이션을 뿌려보면 미세하게 계단이 보인다. 그러나 기초적인 밸런스는 잡혀있고, 채도나 명암에 큰 하자가 있는 것은 아니므로 너무 걱정할 건 없다. FHD의 해상도라서 선명도를 걱정할 것도 없다. 다만 표면 재질때문에 약간 뿌옇게 보이기는 한다. 하여튼 그저 그렇다. 아주 나쁘다는 건 아니고.

내가 가지고 있는 LG 울트라북이랑 비교해보면 색감에서 큰 차이가 없다. 원래 울트라북에 탑재된 패널도 전문가용은 아니지만, 하여튼 화질 좀 좋다는 노트북이랑 비교해도 큰 갭은 못 느낀다는 것이다.




가장 오른쪽 밤 부분에서 그나마 와콤원이 좀 흐릿하게 보이는데 눈으로 보면 거의 구분 못한다.






그라데이션을 펼쳐놓으면 계단현상이 조금 보인다.


4. 악세사리가 부실하다.

일단 와콤에서 공식적으로 제공하는 거치대가 없다. 강의하려면 펜으로 필기도 해야 하고 키보드 타이핑하면서 모니터처럼 쓰기도 해야 하고 여러 가지 역할을 해주면 좋을 텐데, 그러기에는 거치대가 마땅히 없는 것이 불만이다.

그래서 본인은 알루미늄 노트북 거치대를 대신 쓰고 있다. 필기에도 편하고 모니터용도로도 나쁘지 않은 45도 각도! 펜도 거치할 수 있다.






펜에는 뒷꼭지 지우개가 없다. 대신 검지 위치에 버튼이 달려 있는데 이걸 지우개로 설정하면 엄청 불편하지는 않다. 펜이 삼성 S펜이랑 호환이라 다양한 호환가능한 펜을 고를 수 있다.



5. 필기에 불편함은 없다.

펜이 닿는 표면과 디스플레이되는 표면 사이에 갭이 존재하기 때문에 필기가 어색하지 않을까 걱정했지만 전혀 불편한 점이 없고 자연스럽다. 적응할 시간 조차 필요 없다. 최소 필기에 있어서는 말이다. 표면의 마찰력도 적절해서 펜촉을 갈아버릴 정도는 아니면서도 너무 미끌거리지도 않는다.

6. 밝기, 명암 조절이 가능은 한데

가능은 한데 외부 버튼이 없고 소프트웨어로 조정할 수 있다. 다행히 한 번 조정된 값은 유지된다.




7. 튼튼하다.

액정이 왠만큼 세게 두드려가지고는 손상될 염려가 없다. 태블릿 초보가 다루기 좋다.

8. 두꺼운 바젤

바젤리스가 대세가 되어 가는 중에 아직도 옛날 아이패드가 생각난다. 다른 비슷한 가격대의 제품들은 바젤에 이런 저런 버튼이라도 달려 있는데 와콤원은 그런 거 없다.

9. 작은 화면

FHD임에도 불구하고 13인치이기 때문에 화면이 작다, 그 대신 dpi가 높아서 선명하다. 강의용도로는 어차피 큰 폰트를 사용하기 때문에 오히려 더 좋다.

10. HDMI를 연결하지 않으면 일반적인 판타블렛처럼 쓸 수 있다.

화면은 안 나오는데 그 위에서 터치는 된다. 물론 이렇게 쓸 이유가 없지만..


덤으로 판서 프로그램은 '판서펜'을 추천.

그리고 에픽펜도 추천

그리고 내가 만든 더펜도 추천

Read More

우분투에서 C++ 개발하기(3) - CMake

앞선 시리즈 :
우분투에서 C++ 개발하기(1) - https://ladofa.blogspot.com/2018/07/c-1.html
우분투에서 C++ 개발하기(2) - https://ladofa.blogspot.com/2020/08/c-2.html
여기서 사용하는 예제는 두 번째 시리즈에서 사용한 예제를 그대로 사용한다. 예제를 몰라도 읽는데 문제는 없다.

-------------------------

1편과 2편을 잘 정독했던 분들이라도 여기서부터는 예제가 복잡해서 이해하기 쉽지 않다. 쉬운 예제로 설명하고 싶은데.. 불가능하다. cmake가 원래 복잡한 컴파일 과정을 간단하게 하는 거라서... 여기서부터는 구경만 해도 좋고, 어쩌다 CMakeLists.txt 를 분석할 일이 있으면 그 때 한 번 더 봐주시길...

-------------------------


리눅스에서 C++ 코드를 컴파일하려면 최종적으로는 gcc나 다른 컴파일러를 이용해서 컴파일 명령을 내려줘야 한다. 그러나 파일 개수가 많고 의존성이 방대한 큰 프로젝트에서 일일이 gcc 명령을 내릴 수는 없다. 이를 보완하기 위해 Makefile을 작성해서 컴파일 명령어를 미리 입력해두면 나중에는 별 다른 수고 없이 간단한 명령으로 컴파일이 가능하다. 그런데 Makefile을 작성할 때도 결국은 gcc를 잘 알고 있어야 하고, 각종 옵션과 명령어를 직접 입력하는 것도 힘든 일이다.

CMake 기본


CMake는 이런 작업들조차 단순화하여 간단한 명령어를 통해 입력 가능하도록 돕는다. CMake는 사용자가 작성한 스크립트를 해석해서 Makefile을 만든다. 결국 cmake 를 실행한 뒤 make를 다시 실행해야 한다.

CMake도 프로그램이기 때문에 안 깔려 있으면 직접 깔아야 하는데 우분투에서는 다음과 같이 패키지를 통한 설치를 지원한다.

$sudo apt install cmake


여기서 CMake의  apt 패키지 이름이 cmake이고, 실행 프로그램의 이름도 cmake이다. 터미널에 그냥 cmake라고 입력해보자.

Usage

  cmake [options] <path-to-source>
  cmake [options] <path-to-existing-build>
  cmake [options] -S <path-to-source> -B <path-to-build>

Specify a source directory to (re-)generate a build system for it in the
current working directory.  Specify an existing build directory to
re-generate its build system.

Run 'cmake --help' for more information.

위와 같이 뜨면 성공이다. 컴퓨터에 깔려 있는 cmake 프로그램을 실행한 것이다. 버전을 확인하고 싶으면 다음과 같이 입력한다.

$cmake --version

cmake가 인식하는 스크립트 파일의 이름은 CMakeLists.txt 로 정해져있다. make가 기존에 존재하고 있는 Makefile 을 자동으로 인식하는 것처럼 cmake 역시 CMakeLists.txt 라는 이름의 파일을 찾는다.

이전 시리즈에서 작업했던 것과 같이 my.cpp, my.h, main.cpp 파일이 있다고 가정할 때, 이를 빌드하기 위한 CMakeLists.txt 스크립트는 다음과 같다.


cmake_minimum_required (VERSION 3.10)
project (mytest)
add_executable (mytest my.cpp main.cpp)

맨 첫째 줄은 cmake의 최소 버전을 밝히는 것이다. 해당 버전보다 아래인 cmake로 실행할 수  없게끔 막는다.
project()는 해당 스크립트의 프로젝트 이름을 밝힌다. mytest는 이 프로젝트의 이름이며 실행파일을 생성할 경우 실행파일의 이름이 될 것이다.
add_executable은 이 스크립트를 통해 최종적으로 실행파일을 만들고자 한다는 뜻이다. 실행파일 말고 정적 라이브러리를 만들고 싶을 때는 add_library라는 명령을 이용한다.

이 스크립트를 실행하려면 다음과 같이 입력하면 되는데...

$cmake .

make 는 무조건 실행한 경로에서 Makefile의 존재유무를 찾지만 cmake는 반드시 CMakeLists.txt의 경로를 지정해줘야 한다. cmake 다음에 나오는 점(.)이 바로 경로를 나타내는 것이다. 점 하나 찍으면 현재 경로를 말한다.

cmake는 Makefile을 생성하면서 기타 다양한 파일들도 생성하므로 그냥 현재 폴더에서 실행하면 이런저런 파일이 생겨 지저분해진다. 그래서 보통은 build 디렉토리를 만들어서 거기서 실행한다.

$mkdir build
$cd build
build$cmake ..

위와 같이 build 디렉토리를 만든 뒤, 해당 디렉토리 내에서 cmake를 실행한다. 이 때 cmake 뒤에는 점 두개 (..) 가 붙어 있다. 이는 상위 디렉토리를 나타낸다. CMakeLists.txt 파일이 build디렉토리에 있지 않고 그 상위 디렉토리에 있기 때문이다.

빌드에 성공하면 이런 저런 메타파일이 생성되고, 가장 중요한 Makefile이 만들어진다. 이 Makefile의 타겟은 기본적으로 all 과 clean을 가지고 있다. 타깃을 입력하지 않으면 all을 기본으로 한다. 아래와 같이 입력해보자.

build$make

그냥 make라고 하면 자동 생성된 Makefile을 실행시킨다. 여기까지는 거의 공식처럼 사용한다.



빌드에 성공하면 mytest 파일이 만들어져 있다. mytest를 실행해보자.

build$./mytest
3^2 == 9

이제 main.cpp파일을 수정할 것이다. 다음 프린트 구문을 추가한다.

printf("This code is modified.\n" );

다시 mytest를 빌드해서 실행해보자.

build$make
build$./mytest
3^2 == 9
This code is modified.

위와 같이 수정되서 나타난다. 뭔가 신기한 일이 이뤄진 것 같지만 사실 별 것도 아니다. 여기서 일단 CMake는 하는 일이 없다. make를 실행하면 수정된 파일을 감지해서 다시 빌드를 해준다. 그리고 그 결과가 나타난 것 뿐이다.

이제 your.h, your.cpp 파일을 추가할 것이다.

<your.h>
int your_func(int x);

<your.cpp>
#include "your.h"

int your_func(int x)
{
    return x + 10;
}


main.cpp에서도 your_func 을 사용하도록 수정한다.

<main.cpp>
#include <iostream>
#include "my.h"
#include "your.h"

int main(void)
{
    printf("%d^2 == %d\n", 3, my_func(3));
    printf("This code is modified.\n" );
    printf("%d + 10 == %d\n", 3, your_func(3));
}


마지막으로 CMakeLists.txt파일을 다음과 같이 수정한다.

cmake_minimum_required (VERSION 3.10)
project (mytest)
add_executable (mytest my.cpp main.cpp your.cpp)


add_executable에 your.cpp 를 추가한 것이다. 이제 아까와 마찬가지로 새로 빌드를 해본다.

build$make
build$./mytest
3^2 == 9
This code is modified.
3 + 10 == 13

수정된 결과가 반영되어 있다. cmake는 수정된 CMakeLists.txt 파일을 자동으로 반영하여 Makefile을 미리 바꿔놓았다. 그리고 나는 make명령어를 통해  바뀐 Makefile을 실행해서 결과를 확인했다. 

만약 CMakeLists.txt에 오류가 있으면 어떻게 될까?

cmake_minimum_required (VERSION 3.10)
project (mytest)
add_executable (mytest my.cpp main.cpp your.cpp nobody.cpp)

build$make

나는 make를 실행했는데, 실행해보면 CMakeLists.txt파일이 잘못되었다는 에러 메시지가 나온다. cmake는 건들지도 않았는데!

make는 어떻게 cmake를 인식하고 일반적인 빌드 오류가 아닌 cmake 오류를 출력하는 것일까? make가 cmake와 뭔가 연동되어 있는 것일까? Makefile 내부를 보면 cmake 에러가 없는지 확인하고 메시지를 출력하도록 되어 있다. cmake가 Makefile을 생성하면서 그 속에 cmake관련 내용을 스파이처럼 넣어놨다. 그래서 make만 실행해도 CMakeLists.txt의 오류를 검사하게 된다.


라이브러리 구조화

이제 my 라이브러리를 분리해서 컴파일해보자. 보통 프로그램 개발에서 핵심적인 기능을 담당하는 모듈은 기본 프로그램과 분리해서 따로 라이브러리 형식으로 개발하고, 본 프로그램은 해당 라이브러리를 사용하도록 만든다. 지금 예제에서는 mylib 라는 이름의 라이브러리를 개발하는 것으로 가정할 것이다.

일반적으로 라이브러리를 포함한 구조는 다음과 같이 되어 있다. 이 구조를 무조건 지킬 필요는 없지만 보통 이렇다..

  - 라이브러리 이름
    - src
      - files.cpp
    - include
      - files.h
    CMakeLists.txt
  - 또 다른 라이브러리
    ......
main.cpp
CMakeLists.txt

이렇게 글씨로 쓰면 구조가 안 보일까봐 VSCode 캡쳐 화면도 준비했다.



라이브러리마다 CMakeLists.txt 파일이 따로 있고 여기에는 src 디렉토리와 include 디렉토리가 있다. 빌드를 마치고 나서 src 폴더에 있는 cpp파일은 당연히 소스코드니까 공개하지 않지만 include 폴더에 있는 h, hpp 파일은 라이브러리를 사용하는 측에게 공개해야 한다. C의 라이브러리들은 헤더파일이 있어야 쓸 수 있다. 그런 이유를 포함해서 관리상의 편리함 등 여러 가지 이유로 src와 include는 분리해놓는 것이다.

혹시나 다른 사람이 만든 C언어 소스를 보게 되면 항상 include 디렉토리와 src 디렉토리가 따로 나뉜 걸 보게 된다. 또한 src를 컴파일한 결과는 bin 혹은 build 디렉토리에 모셔놓게 된다. 만약 소스코드가 아닌 빌드된 라이브러리를 다운받게 되면 include 속에 있는 헤더파일과 bin디렉토리 내부의 컴파일된 바이너라 파일만 보게 된다. 왜 그런지를 이해하려면 1편을 참고한다...


하여튼 mylilb 속에 있는 CMakeLists.txt의 내용은 다음고 같다.


cmake_minimum_required (VERSION 2.8)
project (mylib)
add_library (mylib src/my.cpp)
target_include_directories(mylib PUBLIC include)


아까의 CMakeLists.txt와 비교해서 다른 점은 add_executable 대신 add_library로 바뀌어 있다는 것이다. 실행파일을 만들지 않고 라이브러리를 생성한다는 뜻이다. 여기에는 사용되는 모든 cpp파일을 적어주어야 한다. 그리고 target_include_directories가 추가되었는데, 여기에 include 디렉토리를 알려줘야 한다.

다음과 같이 빌드해볼 수 있다.

mylib$mkdir build
mylib$cd build
mylib/build$cmake ..
mylib/build$make

빌드하고 나면 libmylib.a 파일이 생성되었다. 이것을 메인에서 이용하면 된다. 바깥쪽에 있는 CMakeLists.txt의 내용은 다음과 같다.

cmake_minimum_required (VERSION 2.8)
project (mytest)
add_executable (mytest main.cpp)
target_link_libraries(mytest PUBLIC mylib)
target_link_directories(mytest PUBLIC mylib/build)
target_include_directories(mytest PUBLIC mylib/include)

target_link_libraries에 라이브러리 이름을 추가한다. 라이브러리 이름이란 *.a에서 맨 앞에 lib를 제외한 것이다. gcc빌드할 때와 마찬기자로 라이브러리 파일은 맨 앞에 lib가 prefix로 붙는다. 파일 확장자가 앞쪽에 붙었다고 생각하면 된다.

target_link_directories 에는 라이브러리 파일의 경로를 추가한다. target_include_directorie 에는 헤더 파일의 경로를 추가하면 된다.

사실 이런 식으로 하는 것은 아예 동떨어진 다른 라이브러리를 가져오는 것과 동일하다. 그런데 현재 디렉토리/프로젝트 구조는 mylib 를 포함하고 있는데, 이 특징을 전혀 살리지 않은 것이다. 하위 디렉토리에 라이브러리가 들어있는 상황에서는 조금 더 간결하게 cmake명령을 만들 수 있다.

이제 add_subdirectory 를 이용해서 디렉토리를 구조화한 보람을 찾아보자.  mylib 디렉토리 내에 있는 CMakeLists.txt는 그대로 두고 메인 프로그램의 CMakeLists.txt를 다음과 같이 수정한다.

cmake_minimum_required (VERSION 2.8)
project (mytest)
add_subdirectory(mylib)
add_executable (mytest main.cpp)
target_link_libraries(mytest PUBLIC mylib)

add_subdirectory에 mylib를 추가했다. 이렇게 하면 mylib 디렉토리 속에 있는 CMakeLists.txt를 인식하고 가져온다. 라이브파일의 경로나 헤더 파일의 경로는 따로 추가할 필요가 없다. 다만 target_link libraries에 mylib를 추가하면 끝이다.

이렇게 하고 build 디렉토리를 만들어서 cmake를 해보면 mylib와 mytest가 같이 만들어지게 된다. 즉 여러 개의 CMakeLists.txt에 각각 명령어를 실행할 필요 없이 한 번에 연쇄적으로 실행된다. 실제로 build 내부에 mylib 디렉토리가 따로 생성되며 여기에 빌드된 라이브러리가 들어 있다.



외부 패키지 추가


마지막으로 외부 패키지를 찾아보도록 하자. 다른 사람이 빌드한 라이브러리를 추가할 때 위에서 소개한 바와 같이 include 디렉토리와 라이브러리를 일일이 추가하는 것은 상당히 번거롭다. 때문에 누군가 고수님께서 우리를 위해 라이브러리를 만드실 때는 CMake를 활용해서 자기 라이브러리를 잘 추가할 수 있도록 메타 정보를 같이 만들어둔다. 우리는 해당 메타 정보만 읽어들이면 라이브러리 추가에 필요한 각종 파라미터(include디렉토리, lib 디렉토리 등)를 자동으로 얻을 수 있다.

대표적인 라이브러리로 OpenCV가 있다. OpenCV를 본 프로젝트에 추가하려면 CMakeLists.txt에 다음과 같이 입력한다.


cmake_minimum_required (VERSION 2.8)
project (mytest)
find_package(OpenCV REQUIRED)
add_subdirectory(mylib)
add_executable (mytest main.cpp)
target_link_libraries(mytest PUBLIC mylib ${OpenCV_LIBS})
target_include_directories(mylib PUBLIC ${OpenCV_INCLUDE_DIRS})


find_package는 주어진 이름의 패키지(메타정보)를 찾아서 라이브러리의 목록과 헤더 파일의 디렉토리 목록을 변수에 저장한다. OpenCV 패키지는 어떻게 찾는가? 그 방법에 대한 링크가 있다.


대략 9가지 정도의 방법으로 패키지를 찾는다(...) 보통은 라이브러리 설치할 때 sudo make install 과 같은 명령어를 입력하면 그 속에 CMake 패키지 등록 과정이 포함되어 있다.

라이브러리를 찾는데 성공하면 OpenCV_LIBS와 OpenCV_INCLUDE_DIRS 가 변수로 제공된다. 이것을 타겟 빌드하는데 추가해주면 된다. 다른 라이브러리인 경우 OpenCV 자리에 다른 이름을 넣으면 된다.

만약 cmake가 없었다면? 우리는 OpenCV를 활용하기 위해 OpenCV 헤더 정보가 있는  include디렉토리를 직접 찾아서 입력해야 하고, 라이브러리 파일도 직접 찾아서 (아마 Makefile에) 추가해줘야 했을 것이다. 라이브러리 버전이 바뀌거나 업데이트되면? 또 달라진 경로와 파일을 일일이 수정해줘야 한다. 이 과정을 cmake가 알아서 해준다.

여기까지 와서 왜 라이브러리와 인클루드 디렉토리를 추가해야 하는가? 이런 의문이 들면 C컴파일 방법을 처음부터 다시 배워야 한다. 이글 맨 위의 링크에서 1탄으로 가시기 바란다.

참고로 CMake 스크립트에서는 순서가 중요하다. target_xxx 인 명령어는 add_executable이나 add_library 뒤에 와야 한다. 그 밖의 명령어는 add_executable/add_library 앞에 오면 된다. 제일 중요한 부분인데.... 마지막에 밝힌다.



  이상으로 우분투에서 C+ 개발하기 시리즈를 마친다.

--------

VSCode로 빌드하기... 는 그냥 연재 안 하는 것으로...  검색해보면 다른 글이 많으니 굳이 내가 수고할 필요가 없다. Remote SSH로 연결해서 컴파일하고, 디버그하고.. 그런 내용일 것이다.
여러분들이 라즈베이파이, 어디 서버 등 리눅스에서 돌릴 프로그램을 개발한다면 파이썬이든 C++ 이든 무조건 VSCode의 Remote SSH 기능을 활용하는 것을 추천한다.

--------

제 블로그에서 가장 인기있는 글이 바로 여기 시리즈라서 따로 인사를 남깁니다. 방문하신 모든 분들, 댓글 달아주신 분들 감사합니다.


Read More

롤 설치 에러 (004 혹은 업데이트의 파일 일부가 손상)



간만에 롤을 깔아보려니 이상한 에러가 자꾸 뜬다.

이 업데이트의 파일 일부가 손상되거나 사라졌습니다. 재시작해 다시 시도하거나 재설치해주세요. 문제가 계속 발생할 경우 고객지원에 문의해 주세요.

라는 메시지인데, 고객지원을 눌러봐야 영 엉뚱한 얘기만 써 있고..


근데.. 어쩌다 해결이 됐다..??
참 이상한데

1. 바탕화면에 깔린 아이콘에 오른쪽을 눌러서 관리자 권한으로 실행

2. 업데이트

반복..?

한 30번 정도 반복하니까 어쩌다 됐다. ?

그런데 클라이언트 실행하면 또 004 에러.. 여기서부터는 포기다.


이 당시 결제 문제로 서버 점검중이었는데 풀리고 나니까 설치 잘 된다. 아무래도 뭔가 문제가 있는 상황에서는 업데이트나 신규 설치를 막는 듯 하다. 물론 왜 막았는지 왜 안 되는지 바로바로 안 알려줘서 그렇지. 게임 서버 점검은 항상 급박하게 이뤄지고 그런 상황에서 유저에게 일일이 친절하게 대응하기가 쉽지 않다.

인터넷에 찾아보면 관리자 권한으로 실행하라는 둥 별 얘기 많은데, 혹시 문제가 있어서 점검중이면 끝날 때까지 기다려보자.
Read More

나이먹기 - 전래놀이 주제에 깊은 게임성

나이먹기는 내 평생 겪은 전래놀이 아니 그냥 게임 중에서도 가장 재미있던 놀이이다. 아주 어렸을 때부터 시작해서 중3때까지 했던 것 같다. 고등학교 올라가고 나서는 점심시간에 자느라 바빴지, 놀 생각을 못했으니까.

찾아보니 역시나 전래놀이답게 룰이 조금씩 다른데, 아무리 찾아봐도 내가 했던 룰을 찾을 수 없다. 다른 룰을 읽어보니 내가 했던 그 게임이 아니고 완전히 다른 게임을 얘기하고 있다. 그래서 내가 겪었던 로컬 룰을 소개한다.



필수요소


인원수는 최소 6명은 되야 재미있다. 많으면 12명정도 까지 좋고 그 이상은 번잡하다.

팀 게임으로서 두 편으로 나눠야 한다. 인원수가 달라도 상관은 없다.

두 팀은 각각 본진을 가지고 있다. 본진은 전봇대나 나무 기둥과 같은 봉 형태여야 한다. 너무 얇으면 안 되고 역시 전봇대가 적당하다. 두 본진과의 거리도 전봇대 거리 정도가 적당하다.

게임 시간은 보통 30분에서 1시간. 보통 200살 넘기 시작하면 그만 둔다.


기본 룰

(빨간색으로 표시된 것이 이 로컬룰의 특이한 점이다.)

모든 사람은 자신의 나이를 가진다. 나이는 절대 서로 같을 수 없다.

사람끼리 접촉(태그)이 일어나면 그 즉시 서로 나이를 따져본다. 비교해서 나이가 많은 쪽 팀이 30살을 먹는다. 나이를 먹은 팀은 팀내 가장 연소자에게 그 나이를 준다.

만약 나이를 먹어서 두 사람 이상이 같은 나이가 되면 반드시 서로 가위바위보를 해서 이긴 사람이 10살 더 먹는다. 여러 명이 같은 나이면 다 같이 가위바위보를 해서 진 사람 한 명은 자기 나이 그대로이고 나머지는 10살씩 먹고 또 가위바위보를 한다.

벌어들인 나이는 한꺼번에 먹을 수 없다. 내가 0살인데 상대가 10살이 있다면 반드시 10살 먹고 상대랑 가위바위보를 해야 한다. 만약 30살을 벌었으면 나(혹은 우리팀 꼴찌)에게는 3번의 기회가 있는 것이고 상대는 한 번만 지면 나보다 나이가 낮아지게 된다.

이렇게 나이가 새로 정해지면 반드시 본진을 한 번 터치하고 나가야 한다. 그렇지 않으면 무조건 0살이다. 즉 가위바위보가 끝날 때마다 본진을 찍고 시작한다. 기습적으로 엉뚱한 곳에서 숨어있을 수 없다.

같은 팀끼리 손을 잡고 있으면(아무 접촉이나 상관없다) 나이를 합칠 수 있다. 예를 들어 20살과 30실이 손을 붙잡고 있으면 40살을 이길 수 있다. 3명이 합쳐도 되고 팀 전체가 합쳐도 상관없다.

본진은 무한대의 나이를 제공한다. 즉 본진과 연결된 사람(들)은 무적이다. 그러나 본진을 직접 태그하면 태그한 팀이 50살을 먹는다. 이런 점은 야구와 비슷하다 홈 베이스를 밟은 상태에서 상대를 태그하면 아웃이지만 상대가 나를 피해서 홈 베이스를 밟으면 1점인 것이다.

게임이 끝날 때 나이를 많이 먹은 팀이 이긴다. 게임을 끝내는 시점은 자유다.


튜토리얼


처음에는 전부 다 0살이다. 다같이 모여서 가위바위보를 해서 0살이 누구인지 정한다. 그 다음 10살, 20살 등 모든 나이를 정한다. 

0살은 아무 데도 못 가고 무조건 본진 수비를 해야 한다. 0살의 비애 ㅜㅜ

 최고령자는 자기 마음대로 돌아다닐 수 있는데 달리기에 자신 없으면 2인 1조 공격을 조심해야 한다. 주로 상대 본진 뒤쪽을 노리는 공격을 한다. 달리기가 빠르면 0살이라도 도망다니면서 어그로를 끌 수도 있다. 꼭 달리기 자신있는 형들이 자기 나이랑 상관없이 시작하자마자 뛰쳐나가고 본다 ㅋㅋ

여러 명이 본진으로부터 손을 연결하면 리치가 매우 긴 무적 공격을 할 수 있다. 대신 본진 수비가 허술해진다. 기습적으로 둘 셋이 손을 잡고 본진을 노리는 상대에게 달려들면 효과적이다.

가끔 경찰과 도둑 게임으로 착각하고 한참 멀리 나가서 안 돌아오는 경우도 있다. 나이를 먹었는데도 안 보이면 일단 빼고 나이를 먹다가 돌아오면 겹치는 나이만 가위바위보를 한다. 멀리 나갔던 우리 편이 승전보를 들고 올 때 엄청 반갑다.

수비할 때는 360도를 다 봐야 하므로 정신이 하나도 없는데, 그게 또 재미지다.

서로 나이 계산이 안 되거나 서로 상대방이 몇 살인지 모른다거나 할 수도 있다. 나이를 반드시 알려줄 의무는 없고, 태그가 일어났을 때만 어느 쪽이 이겼는지 따져보면 된다. 이기는 나이인 데도 지는 척하고 도망가서 상대를 잡기도 한다. 상대를 쫒아가는데 상대가 갑자기 뒤를 돌게 되면 내가 설마 나이가 적던가 싶어서 되려 도망가기도 한다ㅋㅋ


왜 이 게임이 재미있는가


이 게임의 핵심 중의 핵심은 나이의 우세와 열세에 주어지는 보상이 확실하다는 것이다. 아무리 나이 어린 꼬맹이라도 가위바위보만 잘 하면 연장자가 되어 마음대로 돌아다닐 수 있는 힘을 만끽할 수 있다. 반대로 열세에 몰리면 본진만 붙잡고 살아야 한다. 나이가 많을 때 상대를 압도할 수 있는 이 느낌과 만족감이 중독의 핵심이다.

그러면서도 역전이 잘 나온다. 본진을 붙잡으면 무적이기 때문에 기습적으로 상대를 태그할 수도 있고, 합체나 다른 방법으로 불리한 상황을 뒤집을 수 있다. 가위바위보 실력(?)으로 역전도 가능하다. 완전히 불리해져서 본진 수비만 하더라도 상대를 이길 가능성이 없는 것은 아니기 때문에 얼마든지 재미있게 즐길 수 있다.

절대적인 팀 게임이다. 팀에서 벌어도 벌어들인 나이는 무조건 연소자에게 돌아간다. 캐리하는 기분 / 버스타는 기분을 느낄 수 있다. 집만 지키고 있는다고 해서 나중에 나이를 먹을 희망이 없는 게 아니다. 보상은 팀원 전체가 누린다.

0살에서부터 키워가는 육성의 재미가 있다.

처음에 0살에서 시작했어도 나이 10살만 딱 먹고 가위바위보만 다 이기면 가능성은 희박하지만 최고령자가 될 수 있다. 반대로 아무리 나이를 벌어도 가위바위보에서 지면 말짱 꽝이다. 실력 요소와 운 요소가 적절히 잘 결합되어 있다.

전략 요소가 충분하다. 상대 본진 방향의 얼굴쪽, 반대방향의 등쪽 모두 공간적으로 중요하다. 순간적인 합체를 통해 열세를 극복할 수 있고, 어그로를 끌고 돌아다니는 상대방을 구석으로 몰아서 잡을 수도 있다. 나이가 많다고 죄다 공격하러 나왔다면 본진의 빈틈을 노릴 수도 있다.

피지컬로 승부를 걸 수도 있다. 달리기가 빠른 사람은 나이와 상관없이 유리하니 나이의 상성을 뒤집는 재미가 있다. 불리한 상황을 실력으로 극복할 수 있는 것이다.

운동량이 많다. 뛰는 것은 그 자체로도 재미있다.


결론


정리하면서 생각해보니까 재미있을 수 밖에 없는 게임 요소를 모두 가지고 있다. 워낙 게임 요소가 탄탄해서 중독성이 있을 정도이다. 어릴 때 하던 변변찮은 놀이라고 생각하기에는 상당한 게임성을 가지고 있다. 가만 보니 롤이랑 많이 비슷한 것 같다.

이번 나이먹기를 시작으로 전래 놀이를 하나씩 기록해보고 싶다.

Read More

영빈혜선 결혼 축가






2020년 9월 5일 결혼식 축가

어쩌다 보니 결혼식이 계속 미뤄져서 너무 정성스럽게 만들게 됐다..
양가 모두 기독교 집안에 주례를 목사님이 하게 되므로 거기에 맞춰 가사를 썼음.
모티브가 된 곡은 CCM은 예수안에서, 누구나 삶의 시작은 작구나(한웅재)
그리고 김동률의 출발, 데파페페 Start.

왠지 자꾸 가사가 어둡게 나와서 곡이라도 최대한 밝은 분위기로 가려고 노력했다. 가사도 사실 더 어둡고 끈적끈적했었는데 아무래도 결혼식 분위기를 생각해서 힘찬 내용, 그리고 교회 다니는 어르신들이 좋아할 수 있는 바람직하고 성경적인 가사들로 채웠다.

가장 먼저 만들어진 가사는 '우린 보이지 않는 길을 믿음으로 가네', 그리고 '사랑 하나로 우리 그 먼 길을 갈 수 있을까' 이다. 결론적으로 사랑과 믿음만 있으면 얼마든지 갈 수 있다, 이런 내용. 그리고 후렴구는 어떤 믿음과 사랑인지를 구체화하는 내용들이다.

가장 마지막에 쓴 가사는 '주님의 사랑 뜻하신 계획 우리안에 이뤄지리라.' 이거는 그냥 뭐 공간은 남는데 가사는 더 없고 해서 상투적으로 쓰는 말들을 갖다 붙인 것.


음악 작업은 먼저 기타로 시작했다. 데파페페 Start와 같은 리듬으로 노래를 불러보면서 작곡을 끝내고, 편곡은 피아노부터 시작했다. 사실 이렇게 곡 전체를 피아노로 채울 생각은 없었는데 이러나 저러나 교회 음악은 역시 피아노가 가장 잘 어울린다. 피아노에서 베이스를 빼고 어택감을 살려서 소리가 뭉치지 않게  신경을 많이 썼다.

피아노 위에 퍼커션을 깐다. 그 다음 공간을 채우기 위해 아르페지에이터로 탱탱거리는 소리들을 넣었다. 메탈느낌의 짦은 벨이랑 마림바랑 신스콤프가 섞인 건데 이런 도움 없으면 인제 노래도 못 만든다. 어택을 짧게 해서 퍼커션을 보조하는 느낌으로 채우니 리듬도 살고 공간도 채우고 일석이조.

베이스도 마찬가지로 경쾌한 느낌으로  채웠는데 특이하게 베이스에 딜레이가 걸려 있다. 베이스도 아르페지에이터의 일부인 것처럼 넣고 싶었다.

가장 마지막에 들어간 것은 벨이다. 별로 복잡한 노트도 아닌데 곡과 어울리게 적절히 넣는 게 쉽지 않더라.

건반 좀 미스가 많은데 어떤 부분은 불협화음이 마음에 들기도 해서 그냥 놔둠. 불협화음이나 삑사리나는 소리들은 그 악기로 집중하게 만드는 효과가 있다. 어떤 악기가 작아서 잘 안 들리는데 무작정 음량을 키우기도 뭐할 때는 일부러 불협화음을 내는 것도 좋다. 플룻이 가끔 삑삑거리는 것도 다 그런 이유로 넣은 것.

마스터링을 잘 했어야 하는데 불륨이 작다. 하지만 원본 음질은 더 잘 보존한 셈... 으로 치자~ 퍼커션이 크게 들어가서 사실 컴프레싱이 쉽지 않은데, 그래도 퍼커션은 줄이기가 싫었다. 현장은 분명 모니터링이 잘 안 될 테니 노래를 잘 부르려면 박자라도 맞추기 쉽게 해야 한다.



최종적으로는 어쿠스틱 기타를 붙잡고 반주 위에 연주까지 곁들여서 노래하는 것이 원래 계획이었는데 그냥 번거롭고 해서 보컬만으로 공연.











 

Read More

파이썬에서 부울이 아닌 값에 대한 논리연산자

C먼저 확인해보면

C언어에서는 bool 타입이 따로 존재하지 않는다. 0이면 false, 그렇지 않으면 true이다. 심지어는 float도 피연산자로 참여할 수 있다. 그래도 어쨌든 논리연산자의 결과값은 0 아니면 1이 되는 1byte 정수형을 리턴한다.

예를 들어

int a = 10;

float b = 3.14;

printf("%d, %d\n", a && b, sizeof(a && b));

위의 코드에서 출력은 1, 1 이다.


파이썬의 and, or

그런데 파이썬은 조금 더 변태같다.

a = 10

b = 20

print(a and b, a or b)

결과는 20, 10이다. 어째써? and와 or는 다음과 같이 구현되어 있다.

a and b => if a is true, return b, else return a
a or b => if a is true, return a, else return b

and의 경우 a가 참이면 b를 리턴한다. 결과적으로 a and b가 참인지 거짓인지는 b에 달린 상황이다. 만약 a가 거짓이면 그냥 a를 리턴한다. a가 거짓인 줄 알고 리턴하니까 a and b도 거짓이 된다. 이 때 b는 체크하지 않는다.

or의 경우 a 가 참이면 그냥 a를 리턴한다. a가 참이니까 a or b 도 참이다. 이 때 b는 체크하지 않는다. 만약 a가 거짓이면 b를 리턴한다. a or b가 참인지 거짓인지는 b에 달렸다.

한 번 더 정리하자면 a and b 에서 a 가 거짓이면 b를 체크하지 않고 a를 리턴한다. a or b에서 a 가 참이면 b를 체크하지 않고 a를 리턴한다. a and b에서 a가 참이면 b를 리턴하고, a or b에서는 a가 거짓이면 b를 리턴한다.


C언어의 논리연산자는 정수형 입력을 받아서 정수형 출력을 한다. 파이썬의 논리연산자는 입력 타입이 정해져 있지 않다. 그래서 입력 타입이 부울이 아닌 경우 엉뚱한 결과가 발생한다.


bool이 아닌 값들의 참, 거짓

뭐 당연하겠지만 또 웃기는 것은 True의 타입은 <class 'bool'>인데 산술연산에 참여할 때는 정수 1처럼 여겨진다는 것이다.

print(True + True)

결과는 2이다.


또 한 가지 팁이라면 파이썬에서는 None을 거짓으로 취급한다. 반대로 리스트나 기타 오브젝트는 참으로 취급한다. 아래 예제에서

a = [1, 2, 3]

print(a or None)

print(None and True)

결과는 [1, 2, 3], 그리고 None이다.


그런데 비어있는 리스트, 문자열, 딕셔너리, 셋, 튜플 따위는 거짓으로 취급한다.

print( [] or dict() or set() or tuple() or '' or 10 )

결과는 10이다. 10 앞에 나열한 모든 것들은 전부 거짓으로 취급된다.



bool로 변환해야 True가 된다

여기 또 다른 함정이 있다. 예를 들어 10은 bool로 형변환하면 True가 되긴 하지만 그렇다고 1이 True인 것은 아니다.

a = 10

print(a is True)

print(a == True)

결과는 둘 다 False이다. a는 정수 10일 뿐, bool도 아니고 True도 아니다. 


if문을 쓰지 않고 a가 참인지 체크하려면 간단히 bool로 형변환해보면 된다.

print(bool(a))

결과는 당연히 True이다.


마지막으로 아래 식을 확인해보자.

print(type(a and True))

print(type(True and a))

결과는 <class 'bool'>, <class 'int'> 이다. and 연산의 리턴 타입을 보면서 파이썬의 함수는 리턴 타입이 정해져있지 않다는 사실이 새삼 현실로 다가온다.


and, or 응용하기

파이썬의 이러한 특성을 이용하면 변태같은 코딩이 가능하다.


if a < b : func() #이 문장은

a < b and func() #요렇게 바꿀 수 있다.


if not (a < b) : func()

a < b or func()


조건문 대신 and와 or를 쓸 수 있다. 영 and와 or가 어색하다면 and 대신 then, or 대신 otherwise로 읽어보면 조금 더 자연스럽다. 어셈블리어를 해봤으면 매우 자연스러울 수 있다, 점프처럼 생각하면 되니까.

여기에 보태서 None이 거짓으로 인식되는 점을 이용해 None 체크를 할 수 있다.


if a is not None: b = a

else: b = somethingDefault #이 두 문장은

b = a or somethingDefault #요 한 문장으로 바꿀 수 있다.


a를 b에 대입하는데 만약 None이면 미리 정해준 기본값을 대입하도록 한 것이다. 같은 원리로 비어있는 리스트를 체크할 수도 있다.


myList = []

x = min(myList or [-1])

x = min(myList) #에러 발생


만약 myList == [] 즉 비어있는 리스트라면 에러가 발생한다. 이걸 try 로 잡아서 어쩌구 해도 되지만 어차피 비어있을 경우 x에 기본값 -1을 넣을 작정이라면 위와 같이 or를 이용할 수 있다.


결론

당연히 논리연산자의 피연산자는 bool로 묵시적 형변환이 일어나는 줄 알았고, 당연히 출력은 무조건 bool인줄 알았는데 입력 타입을 그대로 살려서 출력한다니 좀 어이없긴 하다. 파이썬의 철학이 단 하나의 목적을 위한 단 하나의 아름다운 코드 아닌가? 이런 변태같은 부분은 파이썬의 기본 철학을 정면으로 부정하는 것이다. 통일성과 간편함을 동시에 추구하는 것이 그렇게 쉬운 일은 아닌 셈이다.

파이썬의 이런 점이 마음에 들지 않는다, 혹은 헷갈려서 공부 못하겠다 싶으면 정수나 기타 이상한 타입은 일절 논리 연산에 참여시키지 말아야 한다. 반드시 bool(a) 또는 a != 0 과 같은 코드를 써서 명시적으로 bool로 변환해주는 것이 좋다. C를 제외한 대부분의 언어, 그러니까 Java와 C#에서는 당연히 이렇게 한다. 논리연산에는 bool만 참여할 수 있기 때문에 반드시 명시적 형변환이 필요하다. 차라리 이게 나은 것 같은데.

Read More

프레젠테이션 샘플 : 전자쓰레기





예전에 누구 자료 만들어준다고 작업한 게 있다. 전자쓰레기를 주제로 한 발표인데, 내 프레젠테이션 스타일이 고스란이 녹아있어서 한 번 소개하고자 올려본다.

업무용, 혹은 제안서 발표용 프레젠테이션은 절대 이렇게 할 수 없다. 그런 데서는 ppt가 문서의 역할을 대신하기 때문이고, 그 쪽 세계에서 통용되는 양식이란 따로 있기 때문이다. 그러나 단순히 프레젠테이션 하나만을 생각한다면 아래 소개된 점들을 활용하면 좋다.

1. 획일적인 레이아웃 타파
 - 매 페이지 넘길 때마다 똑같은 장면이 나와서는 안 된다. 절대 지루하지 않도록 다양한 레이아웃을 활용한다.
 - 제목이 상단에 위치할 필요가 없다. 중간이나 하단에 있어도 된다. 제목이 없어도 된다.
- 화면을 꽉 채우는 그림
- 분위기에 따라 배경 색을 변화

2. 목차나 중간 제목이 없음
 - 목차는 앞으로 어떤 내용이 있을 것인지 전체를 보여주는 역할을 한다. 그런데 미리 알려주고 시작하는 건 재미를 반감시킨다. 흥미를 끌어올리려면 목차나 중간 제목을 없애는 선택도 좋다.

3. 제목보다 더 큰 메시지
 - 슬라이드 한 장의 내용을 요약하는 메시지를 마지막에 넣어서 강조시키면 뭔가 이해가 잘 되는 기분을 느끼게 해줄 수 있고 집중을 얻어내기 쉽다.
 - 이것도 너무 계속 쓰면 뻔한 느낌이 나니까 적당히 사용한다.

4. 시작하는 방법
 - 질문으로 시작한다.
 - 가장 쉽고 재미있는 것으로 시작한다.
 - 주제와 가장 근접한 질문일 수록 좋다.
 - 슬라이드를 다 마치고 사람들에게 던질 질문이 무엇인지 생각해본다, 그 중에서 시작할 때도 던질 수 있는 질문을 찾아서 처음과 끝 두 번 똑같은 화두를 던진다.
 - 밸런스 질문을 활용한다. (군대 두번 가고 10억 혹은 한 번도 안 가고 1000만원 납부 같은)

5. 서술 트릭
 - 숲에서부터 나무로 향하는 전형적인 탑다운 방식 외에도 다양한 서술의 방법이 있다.
 - 여기서는 전자쓰레기를 먼저 말하지 않고 익히 알고 있는 사실들을 나열하면서 본래 주제(전자 쓰레기)로 접근하는 방법을 썼다.
 - 슬라이드에서 제목이 나중에 올라온다.
 - 트릭이 너무 심하면 불편하고 이해하기 어려우니 적당히 쓴다.

6. 애니메이션
 - 모든 요소에는 사소한 애니메이션이라도 있어야 한다.
 - 애니메이션을 쓴다고 화면의 중앙을 너무 오래 비워놓으면 안 된다.

7. 위치 활용
 - 화면의 중앙이 제일 중요하다.
 - 극적인 효과를 위해 아래쪽이나 구석을 활용한다.

8. 동영상 편집을 한다면
 - Youtube 에 올릴 동영상이라고 생각하면 기존 관습적인 ppt 스타일에서 벗어나 현재 유행하고 있는 기법을 받아들이기 쉬운 마음가짐이 된다.

9. 사람이 먼저다
 - 프레젠테이션은 자료가 아니라 사람이 하는 것이다.
 - 스피치를 먼저 구상하고 자료가 뒷받침해야 한다.
 - 전체 내용을 몇 개의 문장으로 요악하면 그것이 전체 발표의 구성/흐름이 된다.
 (우리는 살면서 스마트폰 등 많은 전자 제품을 사고 버립니다. 그 버려진 전자제품들을 전자 쓰레기라고 하는데 지구 환경에 큰 문제입니다. 그러나 전자쓰레기를 재활용하면 좋은 자원이 될 수도 있습니다.)

10. 내용이 더 먼저다.
 - 내용이 충실하고 그 내용을 발표자가 잘 이해하고 있으면 자신감이 생겨서 자료고 뭐고 상관없이 알아서 잘 풀린다.
 - 사람들은 결국 내용이 좋아야 만족한다.

11. 안 듣는 척 다 듣는다.
 - 딴 짓 하는 사람들이 강의평가는 가장 냉정하다.
 - 좋은 푸줏간 주인은 좋은 쇠고기를 팔 뿐이다. 보든 안 보든 그저 열심히 해야 한다.
 - 어째 ppt 자료랑 상관 없는 내용인데 ㅋㅋㅋ


Read More
Powered by Blogger.