세계적으로 폭발적인 인기를 얻고 있는 수능 수학 모의고사 강의

수학 강사 얼굴이 너무 예쁜 나머지-_- 외국인들이 한국어를 알지도 못하면서도 수능 모의고사 강의를 듣고 있다고 한다. ㅋㅋㅋㅋ 재생시간 1시간 11분 2초

지금 영상 조회수가 160만을 넘어간다. ㅋㅋㅋㅋㅋ 이제 k-pop이 아니라 k-math라는 댓글이 제일 웃겼다. ㅋㅋㅋㅋ 역시 외모는 국경을 초월하는 어드밴티지인 듯-_-


2019.8.24
조선일보 ‘수능 수학 강의’에 외국인들 열광, K팝 이어 K매스에 빠졌나? 2019.08.24 03:00

유토리 교육 : 원주율이 3.05보다 큼을 증명하시오

유튜브에서 鈴木貫太郎 선생의 수학문제를 푸는 채널[1]을 가끔보는데, 2003년 전설(?)의 동경대학 입시문제를 소개[2]하고 있다. 원주율이 3.05보다 큼을 증명하라는 문제라고 한다. 이 문제가 출제된 배경으로 당대 유토리 교육을 비판하기 위해 출제한 문제라고 한다. 나는 처음 듣는 이야기인데 나무위키[3]를 대충보니, 과거 일본에서 학생들의 학업량을 줄이기 위해 원주율을 걍 3으로 가르친 적이 있었던 듯 하다. 수학문제로 교육문제를 까는 센스라고나 할까. 한국같으면 교과과정 외 문제가 나왔다고 비난을 면치 못했을 듯 하다. ㅎㅎㅎㅎ

이걸보니 과거 미국에서 시도된 구성주의 교육에 대한 실패사례가 생각나는데, 아이추판다 선생의 명문[4,5]을 참고할만 하다. 흔히 주입식 교육이 나쁘고 창의성을 길러야 된다는 등의 주장을 하는 사람이 많은데, 그럴때마다 슬램덩크를 읽어 보라고 해야할 듯-_-하다. ㅋㅋㅋ 나도 방안에 슬램덩크 전권을 가지고 있는데, 이거 진짜 명작인 것 같다. ㅎㅎㅎ

창의성도 일단 지식이 주입돼야 나오는 건데, 아무것도 아는 게 없는 애들에게 자꾸 학업량을 줄이고 지식 주입을 줄이는 게 바람직한 건지는 의문이다. 향후 단순 작업들이 점점 더 기계로 대체되면, 후대를 거듭할수록 첫 직업을 갖기까지의 필요 지식량이 증가하기 마련이다. 일전에 OECD 국가별 계층이동성 보고서[6,7]를 보니, 한국은 다른 국가에 비해 교육에 의한 소득상승률이 더 높다고 하던데, 먹고사니즘-_- 걱정이 없는 애들은 피똥싸도록 공부해도 시원찮은 시기가 아닐 수 없다. 명심보감[8]에 이르기를, 소년은 늙기 쉽고 학문은 이루기 어렵다.(少年 易老 學難成)

그래서, 원주율이 3.05보다 크다는 걸 어떻게 보일까? 당연히 여러가지 원주율의 근사법이 모두 활용가능하다. 일단 계산하다가 적당한데서 중단시키고 부등식을 만들면 되니까. ㅋㅋㅋ 가장 초등적 방법은 아르키메데스가 사용했던 다각형으로 근사하는 방법인데, 鈴木貫太郎 선생도 이 방법을 쓰고 있다.[2] 문득 든 생각인데, 라이프니츠 공식을 수론으로 증명[9]한 후에, 합을 적당히 끊어서 부등식을 만들어도 되지 않을까 싶다. ㅋㅋㅋ 이건 너무 오버인가? ㅋ

참고로 鈴木貫太郎 선생의 영상 중에 2006년 교토대학교 기출문제라고 하는 tan1°가 유리수인가? 하는 문제를 해설하는 영상[10]도 재미있다. 보기전에 한번 풀이를 생각해 보시라. ㅎㅎ

.


2019.3.1

.


[1] 鈴木貫太郎 (youtube.com)
[2] 伝説の東大入試問題 π>3.05を証明せよ 高校数学 (youtube 17분 41초)
[3] 유토리 교육 (나무위키)
[4] “슬램덩크”로 보는 교육 (nullmodel.egloos.com)
[5] “슬램덩크”로 보는 교육 II : 미국 구성주의 교육의 실패 (nullmodel.egloos.com)
[6] 내 백과사전 OECD 국가별 계층이동성 (2018) 2018년 6월 19일
[7] OECD (2018), A Broken Social Elevator? How to Promote Social Mobility, OECD Publishing, Paris, https://doi.org/10.1787/9789264301085-en
[8] 내 백과사전 명심보감 권학편 2013년 8월 10일
[9] 내 백과사전 원주율의 라이프니츠 공식을 수론으로 증명 2012년 7월 5일
[10] 京都大 史上最短の入試問題 tan1°は有理数か 高校数学 (youtube 8분 48초)

‘계왕성’은 백색왜성인가

유튜브에서 ‘물리엔진군’이라는 채널[1]을 얼마전에 봤는데, 여러가지 상황을 물리엔진 소프트웨어를 통해 컴퓨터 시뮬레이션하는 영상을 보여준다. 근데 쓸데없는 개그가 초 많아서 열라 웃긴다. ㅋㅋㅋㅋㅋㅋㅋ 어떤 사람이 친절하게도 한국어 자막을 만들어 두었으니 쉽게 볼 수 있다. 사용하는 소프트웨어는 유니티 물리엔진이라고 설명하는 블로그 글[2]을 봤는데, 출처가 없어 확실치 않다.

여하간 그 영상들 중에 계왕성을 시뮬레이션하는 편[3]이 있다. 계왕성은 토리야마 아키라의 유명한 만화 ‘드래곤볼’에서 등장하는 별[4]인데, 본 지 하도 오래돼서 무슨 내용때문에 나오는지도 기억이 하나도 안 나네-_- 재생시간 5분 47초.

유튜브 영상[3]의 내용 자체는 천문교육보급연구회에서 발간한 와타라이 켄야(渡會兼也) 선생의 연구[5]를 참고로 만들었다고 나와 있다. 천문교육보급연구회의 2010년 9월호 회지에 있는데, 글[5]의 내용은 드래곤볼에 나와있는 계왕성의 정보를 토대로 계왕성의 밀도를 추정하여, 전형적인 백색왜성의 밀도를 가지고 있음을 설명하는 내용이다.

간단하게 핵심내용을 설명하자면 이러하다. 와타라이 선생은 만화의 그림에서 자동차와의 상대적 크기를 비교하여 계왕성의 반경을 18m 정도로 추정하고 있고, 계왕성은 지구중력의 10배라고 나와 있으므로, 지구 중력과 질량과 반지름을 각각 F_E, M_E, R_E, 계왕성의 중력과 질량과 반지름을 F_K, M_K, R_K라 두자.

\displaystyle F_E = \frac{GM_E m}{R_E^2}, \displaystyle F_K = \frac{GM_K m}{R_K^2}

의 양변을 변변 나누어

\displaystyle \frac{F_K}{F_E} = \frac{M_K}{M_E} \left( \frac{R_E}{R_K} \right)^2 = 10

를 얻는다. 따라서 지구질량과 반지름 및 계왕성의 반지름을 각각 대입하여, 계왕성의 질량을 추정할 수 있고, 따라서 밀도도 추정가능하다. 추정된 밀도는 약 4×105 g/cm3으로, 계왕성의 반지름 자리수를 1~2자리 바꿔도 값이 크게 달라지지 않는다고 한다. 위키피디아에 따르면 중성자별의 밀도는 3.7×1014에서 5.9×1014 g/cm3 정도이고, 전형적인 백색왜성의 경우 105에서 107 g/cm3정도 되므로, 계왕성은 백색왜성에 해당한다고 볼 수 있다.

천문교육보급연구회의 회지 전체 글들[6]도 모두 웹상에서 확인할 수 있으니 참고바람. 사이트가 좀 허름해 보여도-_- https로 돼 있어서 나름 관리가 되고 있는 것 같다. ㅎㅎㅎ

글[5]의 뒷쪽에는 수업시간에 이런 이야기를 섞어주면, 자는 학생도 일어나서 들을 정도로 학생들이 나름 꽤 흥미를 가져 준다는 이야기를 하고 있다. ‘드래곤볼’이 꽤 오래된 만화라서 요새 애들도 아는지 모르겠지만, 일본내에서는 나름 죽지않는 컨텐츠로 명성을 이어가는 것 같다. ㅎㅎ

와타라이 선생의 소속이 가나자와 대학 부속 고등학교로 나와 있어서 그냥 고등학교 선생님인줄 알았는데, 검색해보니 나름 발표 논문도 많고 연구를 많이 하는 사람 같다.[7,8] 범상치는 않은 사람인 것 같다.

일전에 Mathbreakers 이야기[9]도 했지만, 학생들이 수업에 주의를 유지하면서 동시에 학습할 내용도 기억할 수 있도록 하는 컨텐츠의 개발은 교육자의 관점에서 나름 중요한 요소가 아닐까 싶다.

.


[1] 物理エンジンくん (youtube.com)
[2] チャンネル人工知能の中の人は誰?使ってる物理エンジンソフトは何? (masamunenet.com)
[3] 【물리엔진】중력 10배! 계왕성에서 살면서 알게 된 것【드래곤볼①】 (youtube 5분 47초)
[4] 토리야마 아키라, “ドラゴンボール (18권)”, 슈에이샤(集英社)
[5] 渡會兼也, “「界王星」は白色矮星か“, 2010年9月号 106号 Vol.22 No.5 (pdf 167kb)
[6] 会誌『天文教育』 発行一覧 (tenkyo.net)
[7] 渡會 兼也 (researchmap.jp)
[8] 渡會 兼也 (jglobal.jst.go.jp)
[9] 내 백과사전 Mathbreakers : 수학 교육용 3D 어드벤쳐 게임 2014년 4월 16일

산타의 실재성에 대한 부모의 딜레마

일전에도 언급[1]했지만 (오덕들에게만) 초초초 유명한-_- 라노베/애니메이션인 ‘스즈미야 하루히의 우울‘의 첫 구절은 다음과 같이 시작한다.

산타 클로스를 언제까지 믿었냐는 건 하잘 것 없는 이야기만큼도 안되는 정도의 아무래도 좋은 이야기지만, 그래도 내가 언제까지 산타라 불리는 상상의 빨간옷 할아버지를 믿었냐고 말하자면 확신을 가지고서 말하건대 처음부터 믿지 않았다.
サンタクロースをいつまても信じていたかなんてことはたわいもない世間話にもならないくらいのどうでもいいような話だが、それでも俺がいつまでサンタなどという想像上の赤服じーさんを信じていたかと言うとこれは確信を持って言えるが最初から信じてなどいなかった。

영미권에서는 부모가 어린이에게 빨간옷을 입은 불법 주거 무단 침입자의 존재성을 믿게하려는 문화가 있는데, 유튜브에서 영어 강좌[2]로 나름 유명하신 Michael Elliott 선생의 페북에 어릴 때 산타를 믿다가 마음의 상처를 받았다는 글[3]이 있길래 본인도 함 써본다. ㅎ 한국어가 모국어가 아닌 사람으로서 이 글[3]은 무척 잘 썼다고 생각되니 일독을 권함. 영어를 이 정도의 필력으로 쓸 수 있으면 원이 없겠다-_-

여하간 어린이 중 산타를 믿는 비율 이야기가 나오면 1978년 논문[4]의 결과를 인용하는 글이 꽤 많던데, 내가 볼 때는 이건 너무 오래 됐고 좀 최근 연구가 없나 싶어서 찾아보니, 비교적 근래의 연구[5]도 있었다. CNN 기사[6]에 위 두 연구[4,5]를 포함한 잡다한 통계를 언급하고 있어 참고할만 하다. 서구권 아이들은 대략 5세에서 8세 사이에 그 비율이 급속도로 떨어지는 것 같다.[7] 위 Elliott 선생의 일화[3]는 대략 8세 정도에 있었던 사건으로 추정되니, 아무래도 집단적으로 확산되는 불신의 끝자락에 있었던 마지막 저항(?)이 만들어낸 추억이 아닐까 싶다. ㅎㅎㅎ

예전에는 왜 아이들을 기만하고 사기를 치면서까지 끝끝내 그 괴이한 존재를 믿고 싶게 만드는지 알 수 없다고 생각했었다. 본인은 일전에 어느 고교생과 대화 도중에 부모에게 배신(?)을 당해 대단히 불쾌한 추억으로 남아있다는 이야기를 들은 기억도 있다. 산타의 존재는 아이를 위한다기보다는, 아이가 그걸 믿고 있다고 믿음으로서 자신이 아이의 (기만으로 얻어진) 순수성에 어떤 기여를 하고 있다고 믿고 싶어하는 어른의 자위적 욕구가 아닐까?

근데 Elliott 선생의 글[3]을 보니 생각이 조금 바뀐다. 즉, 생후 처음으로 가장 신뢰하는 성인에게 당하는 사기(?)에 대한 심리적 적응이라는 측면에서 유익함도 있지 않나 싶다. 크든 작든 평생 사기를 당하지 않고 살 수는 없다. 생후 최초로 사회집단 전체가 제공하는 무해한 사기를 경험함으로서, 사기에 대한 면역을 키우는 것이다. 그런 의미에서 나름 교육적(?)인 문화일지도 모를 일이다. ㅎㅎㅎ

사실 이런 경험으로 어떤 대상의 존재를 함부로 믿는 것에 벗어나, 증거와 근거 중심의 합리적이고 논리적 판단을 해야 한다는 교훈을 얻을 게 아니겠나 싶긴 한데, 미국에서조차 무신론자가 많지 않다[8]는 걸 생각하면, 그런 경험들이 별로 교훈적으로 작동하는 것은 아닌 듯 하다.

.


[1] 내 백과사전 하루히 문제 : Superpermutation의 최소 길이 2018년 11월 2일
[2] Michael Elliott (youtube.com)
[3] https://www.facebook.com/photo.php?fbid=590513337688459&set=a.123834524356345&type=3&theater
[4] Norman M. Prentice, Martin Manosevitz, Laura Hubbs, “Imaginary figures of early childhood: Santa Claus, Easter Bunny, and the Tooth Fairy.” American Journal of Orthopsychiatry, Vol 48(4), Oct 1978, 618-628 https://doi.org/10.1111/j.1939-0025.1978.tb02566.x
[5] Jacqueline D. Woolley, Lili Ma, Gabriel Lopez-Mobilia, “Development of the Use of Conversational Cues to Assess Reality Status” Journal of Cognition and Development, Pages 537-555 | Published online: 02 Nov 2011 https://doi.org/10.1080/15248372.2011.554929
[6] CNN How many kids still believe in Santa? 1313 GMT (2113 HKT) December 19, 2017
[7] 아틀랜틱 When Kids Stop Believing in Santa DEC 21, 2014
[8] 내 백과사전 신을 믿지 않을 자유 2012년 11월 25일

수학문제 풀어주는 앱들

일전에 사진으로 방정식을 찍으면 풀어주는 앱 이야기[1]를 했는데, 한 발 더 나아가 근래 들어서 스마트폰으로 수학문제 사진을 찍어 올리면 풀어주는 앱이 몇 개 등장[2~8]한 것 같다. 아무래도 니즈가 있으니까 생기는 거겠지만, (비교적 교육시장의 메이저라 할 수 있는) 오르비조차도 별로 비전이 없다고 생각하는[9] 교육시장에 뛰어드는 용기있는(무모한?) 스타트업이 꽤 되는 듯. ㅋ

빅매쓰[2]라는 앱을 운영하는 회사는 학원같은데, 문제를 풀어주는 선생풀이 학원 자체적으로 조직된 것 같다. 오누이 앱[3]도 마찬가지로 고정된 선생풀을 이용하는 것 같고, 비용은 다른 앱들에 비해 고가인 듯.

‘바로풀기’ 앱[4]은 이미지 분석을 통해 유사한 수학문제를 찾아주는 (신박해 보이는) 기능이 있는데, 작년에 이 기능을 한 번 써본 적이 있다. 그런데 성능이 꽤 시원치 않아서 까먹고 있었더니만, 이미지 분석 실력을 인정받은 건지 네이버에 인수됐다[10]고 한다. 창업자들은 나름 꽤 벌지 않았을까-_-

콴다[5]도 자체적으로 이미지 분석 알고리즘이 있는 것 같다.[11] 이미지 내 수식을 인식할 수 있는 기술을 개발중인 듯. 이쪽은 독특하게도 선생풀을 따로 가진 것이 아니라, 문제 중개만 해주는 플랫폼 사업인 것 같다. 아마 아마존처럼 구매자-판매자 연결과 레이팅 시스템을 활용할 듯 싶다. 근데 콴다[5]를 사용해본 사람의 말[12]에 따르면 최저시급도 안 나온다-_-고 하니, 대학생들이 쉬는 시간에 짬짬이 용돈벌이 할 수 있는 수준밖에 안 될 듯 하다. 아무래도 중고등학생이 구매력이 있는 계층이 아니다보니, 수익을 쥐어짜기 어렵지 않을까.

메가스터디도 자체적으로 앱[6]을 운영하는 듯. 그 밖에 몇 개[7,8]가 더 있었다. 근데 바풀[4]을 제외하면, 본인이 직접 써 본 건 하나도 없음-_-

.


2019.2.23
스얼 에듀테크 프레스데이 21개 스타트업 소개 (estimastory.com)

.


[1] 내 백과사전 PhotoMath : 사진을 찍어 방정식을 푸는 앱 2014년 10월 22일
[2] https://www.pascal.education/
[3] https://onuii.com/Student
[4] 공부Q&A앱 바로풀기-전과목 질문 무료 해결 공부필수앱 (apple appstore)
[5] https://qanda.co.kr/
[6] 실시간 질의/응답 서비스 : QUBE (google playstore)
[7] 야자수 ( 수학 질문 앱 ) (google playstore)
[8] https://snapask.com/ko-kr
[9] 오르비는 무엇을 하는 회사인가 (orbi.kr)
[10] 매일경제 네이버의 왕성한 식욕…모바일앱 또 인수 2017.12.22 16:15:54
[11] 지디넷 콴다 “울릉도 학생도 대치동 수준 과외 받을 수 있다” 2018.05.03.18:56
[12] 콴다 선생님하시는분들 (orbi.kr)

인터랙티브한 수학 학습

거의 20년전에 Yugo Nakamura라는 인터랙티브 아티스트에 매료되어 그의 홈페이지와 작품을 자주 감상하던 시절이 있었는데, 지금 확인해보니 그의 홈페이지 주소[1]가 변경된 듯 하다. 과거에는 플래시로 만든 멋진 작품을 많이 봤었는데, 본인도 한 때는 플래시가 주류 플랫폼이 될 줄 알고 여러가지 매력적인 웹브라우저 상의 연출을 궁리했다. ㅋㅋㅋ 지금 돌이켜보면 완전 헛짓이 아닐 수 없구만. ㅋㅋㅋ

여하간 기술이야 어쨌든간에 사용자와 웹브라우저상의 상호작용은 시대를 통털어 매력적이라 단언할 수 있다. 아무 바이너리의 설치도 없이 즉시 뭔가 상호작용이 가능하다는 매력은 생각 이상으로 큰데, 텐센트가 근래 ‘샤오청쉬’라는 html5를 기반으로 한 플랫폼을 출시하여, os와 독립적으로 앱 생태계를 구축하는 모습[2]을 보니, 내 과거의 망상이 (모습은 다를지라도) 현실화 되는 느낌이다-_- 샤오청쉬의 위력에 대해 설명이 잘 돼 있는 이코노미 인사이트의 이번 달 기사를 읽어봤는데, 아직 웹상에서는 볼 수 없는 듯.

수학 선생들도 이런 비슷한 망상을 하는 사람이 좀 있는데, 대량의 문제 pool에서 문제를 자동적으로 꺼내오고, 학생이 문제를 맞추면 더 높은 단계로 나가고, 틀리면 유사문제를 끝없이 제시하는 형태의 자동화된 학습체계를 상상하는 선생들을 꽤 본 적이 있다. (개념을 제대로 가르칠 생각은 안하고, 문제를 대량으로 던져줘서 입시머신을 만드는 선생들이 선호하는 망상이긴 하지만…) 물론 하늘 아래 새로운 생각은 없고 이런 생각 자체는 하찮은 것이지만, 정작 생각하는 본인들은 자기 생각이 엄청 독창적이고, 특히 보안이 매우 중요하다고 생각들을 하시는 듯. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

해커뉴스[3]에서 인터랙티브한 수학 학습 사이트 소개를 하는 글[4]을 봤는데, 확실히 인상적이긴 하지만 사이트를 구축하는 노력에 비해 얻는 결실이 얼마나 가치가 있는지 생각해 볼 필요가 있다. 내가 아는 어느 선생도 수학문제를 스마트폰으로 자동으로 배포하는 플랫폼 개발을 시도하고 있던데, 개인적으로는 회의적이다. ㅎㅎㅎ 차라리 수학 어드벤쳐[5]가 나으려나-_-?

.


2018.9.13
이코노미 인사이트 생태계 구축 이어 수익 창출 2018년 09월 01일 (토)

.


[1] http://tha.jp/
[2] 연합뉴스 슬그머니 발 뻗는 中 텐센트…위챗에 앱스토어 유사 플랫폼 열어 2017/01/10 10:50
[3] Show HN: Interactive Calculus via LaTeX (hacker news)
[4] calculus 1 (ximera.osu.edu)
[5] 내 백과사전 Mathbreakers : 수학 교육용 3D 어드벤쳐 게임 2014년 4월 16일

핀란드 초등학교에서 어학 교육을 수행할 로봇 선생님

로이터 보도[1]에 따르면 핀란드에서 시범적으로 초등학교에서 어학교육을 로봇 선생이 담당할 예정인 듯 하다. 이 로봇 선생의 커뮤니케이션은 아직 영어, 독일어, 핀란드어 밖에 안 되지만, 최종적으로는 23개 국어를 목표로 하고 있는 것 같다.

로이터 기사[1]에 첨부된 영상에 로봇이 강남스타일 춤을 추는 부분도 있다. 초 웃기네-_- ㅋㅋㅋ 로봇 제작자가 왜 교육에 강남스타일이 도움이 된다고 판단했는지는 모르겠다. 32비트 정수형의 오버플로우[2] 때문인가-_- 여하간 강남스타일이 진짜 세계적 문화 컨텐츠가 된 듯. ㅋㅋㅋ

뭔 로봇인가 싶어서 검색해 봤는데, 유튜브 영상[3]도 있었다. 얼라들한테 가르치는 일은 인내심과 반복을 요하므로 로봇이 차라리 나을지도 모르겠다. ㅋㅋㅋ 선생이라는 직업도 인공지능 시대에 나름 위태로운 지위에 있지 않나 싶다. ㅎㅎㅎ

오래 전에 읽은 Ian Ayres[4]에서 각본과 대사가 모두 짜여져 있는 연극같은 선생의 교육이 더 효율적이라는 주장을 본 적이 있는데, 이걸 보니 정말 그럴 수도 있나 싶기도 하다. 일전에 에스토니아의 수학교육[5]도 그렇고, 교육의 미래가 어찌될지 사뭇 흥미진진하다.

뭐, 자기 애에게 딱! 맞춰달라고 앙앙불락 하는 아지매들이 존재하는 한, 로봇에게 일자리를 잃는 일은 영원히 없을 테니 선생들은 안심하시라. ㅋㅋ

 


[1] 로이터 Techno teachers: Finnish school trials robot educators MARCH 27, 2018 / 11:03 PM
[2] 내 백과사전 강남스타일 조회수가 32비트 정수 범위를 넘어서다 2014년 12월 3일
[3] By 2030 students will be learning from robot teachers 10 times faster than today (youtube 4분 47초)
[4] 내 백과사전 [서평] 슈퍼크런처 : 불확실한 미래를 데이터로 꿰뚫는 힘 2010년 12월 25일
[5] 내 백과사전 컴퓨터에 기반한 수학교육 : 수학교육에서 계산을 없애는 것이 가능할까? 2013년 2월 19일

수학 교사를 위한 자바스크립트 트릭들

국내 수학교사/강사의 절대다수는 한/글을 워드 프로세서로 사용하고 있다고 추정한다. 여태 살면서 한/글 이외의 워드 프로세서를 사용하여 수학문제를 편집하는 수학 선생을 본 적이 없다-_- 혹시 있으면 댓글 함 달아 주시면 매우 감사하겠습니다. ㅋㅋㅋ

한/글에는 스크립트 기능이 있는데, 이게 자바스크립트랑 엄청 유사해서 자바스크립트의 트릭들이 다 적용된다. 이거 잘 쓰면 되게 편리한데, 지금까지 살아오면서 본인이 편리하다고 생각되지만 잘 모를법한 트릭들을 기록해 둔다. ㅋ

1. replace, RegExp 함수 대신 split, join 함수 쓰기

ㅌ=4ㅅ 라고 입력하면 x=4t 라고 짜잔! 하고 변환하고 싶은데 다음과 같은 루프를 쓰면 왠지 될 것 같다-_-

var k_list =['ㅁ','ㅠ','ㅊ','ㅇ','ㄷ','ㄹ','ㅎ','ㅗ','ㅑ','ㅓ','ㅏ','ㅣ',
'ㅡ','ㅜ','ㅐ','ㅔ','ㅂ','ㄱ','ㄴ','ㅅ','ㅕ','ㅍ','ㅈ','ㅌ','ㅛ','ㅋ',
'ㄲ','ㄸ','ㅃ','ㅆ','ㅉ','ㅖ','ㅒ'],
e_list =['a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','q','r','s','t','u','v','w','x','y','z',
'R','E','Q','T','W','P','O'];

for(i=0;i<k_list2.length;i++)
{
	text=text.replace(RegExp(k_list[i], "g"), e_list[i]);
}

근데 ‘xy’라고 치면 ‘툐’가 되어버리므로 이래서는 곤란하다. k_list 목록에 ‘툐’ 같은 걸 추가하면 될 것 같은데, 이게 또 초성이 없는 조합들이 안 먹힌다. 예를 들어 ‘over’라고 치면 ‘ㅐㅍㄷㄱ’인데, 한/글은 초성이 없는 한글문자를 지원하므로 깨지게 된다. 이 경우 RegExp 함수의 문제 같은데, replace 함수 대신에 split, join을 사용하여 치환하는 트릭[1]을 사용하면 ‘ㅐㅍㄷㄱ’이 ‘over’로 깔끔하게 변형된다.

text=text.split(k_list[i]).join(e_list[i]);

2. Byte order mark 제거

위와 같은 트릭을 쓰려면 처음에 텍스트를 유니코드로 받아야 하는데, 한/글 스크립트 팁이라면서 인터넷에 널리 퍼져 있는 다음과 같은 코드는 작동하지 않는다.

text = GetTextFile("TEXT", "saveblock")

저 TEXT 부분을 UNICODE로 바꾸면 된다. 이 경우 텍스트 앞쪽에 Byte order mark가 첨가되어 텍스트 앞부분의 더미를 아무리 치환하려고 해도 제거가 되지 않는데, 이걸 몰라서 원인을 찾느라 열라게 삽질했다-_- 다음과 같이 코드를 사용하면 된다.

text = GetTextFile("UNICODE", "saveblock")
text=text.replace(/^\uFEFF(1\.  )?/, '');

3. indexOf의 정규식 사용

자바스크립트의 indexOf에는 정규식이 안 통하는데, search에는 통한다. 근데 search에는 특정 위치부터 검색을 시작하는 옵션이 없다. stack overflow에 누군가 아주 훌륭한 함수[2]를 올려두었으니 그대로 카피해 쓸 수 있다.

function regexIndexOf(text, re, i) {
    var indexInSuffix = text.slice(i).search(re);
    return indexInSuffix < 0 ? indexInSuffix : indexInSuffix + i;
}

4. 반올림 처리

대부분의 프로그래밍 언어에서 이진수의 특성 때문에 0.1 + 0.2를 하면 0.3이 안 나오는데, 심지어 웹사이트[3]도 있고, 이를 이용한 smbc의 개그[4]도 있다. ㅋㅋ

이런 특성이 자동 보기[5]를 만들때 곤란한 경우가 있는데, 어느 웹사이트[6]에 있는 다음과 같은 코드를 쓰면 된다.

function roundXL(n, digits) {
	if (digits >= 0) return parseFloat(n.toFixed(digits));		// 소수부 반올림

	digits = Math.pow(10, digits);					// 정수부 반올림
	var t = Math.round(n * digits) / digits;

	return parseFloat(t.toFixed(0));
}

5. 특정 문자의 대문자

수학문제에 확률변수 X라든가 선분 AB 같은 것들은 대부분 대문자를 쓰고 있는데, 자동으로 대문자로 뿅 변하면 무척 편리하다. ㅋㅋ 문자열의 특정 부분만 대문자로 바꾸는 트릭은 stack overflow[7]에 있다. 다음과 같이 pos에서 pos2 사이를 대문자로 만들 수 있다.

text = text.substring(0,pos) + text.substring(pos,pos2).toUpperCase() + text.substring(pos2);

6. right 자동 넣기

수식에 left … right를 많이 쓰는데 은근 치기 귀찮다. right가 없을 때만 right를 자동으로 넣는 정규식

text = text.replace(/left\s*(((?!right)[^\}])*)([\}\)\]])?$/,'left$1 right$3');

7. 이미지 사이즈 절대 크기

클립보드의 이미지를 스크립트로 붙여 넣을 때, 항상 사이즈를 50%로 하고싶으면

HAction.Run("Paste");
FindCtrl();
HAction.GetDefault("ShapeObjDialog", HParameterSet.HShapeObject.HSet);
with (HParameterSet.HShapeObject)
{
	Height = Height*0.5;
	Width = Width*0.5;
}
HAction.Execute("ShapeObjDialog", HParameterSet.HShapeObject.HSet);

라고 하면 될 것 같지만 안된다-_- 왜냐하면 붙여 넣는 순간에 한/글이 이미지 사이즈를 조정하여 원본 크기가 아니라 편집용지 크기에 맞춰 붙여 넣어 주기 때문이다. 이걸 해결 못해서 매번 손으로 삽질했는데-_- 다음과 같이 변경하면 된다.

	Height = ShapeDrawImageAttr.OriginalSizeY*0.5;
	Width = ShapeDrawImageAttr.OriginalSizeX*0.5;

8. 한/글의 미주 버그

커서가 미주 안에 편집 상태에 있을 때, 미주를 생성하는 스크립트 HAction.Run(“InsertEndnote”) 를 실행하면 에러가 나면서 한/글이 비정상 종료가 된다. 문서를 날려먹는 멘붕을 몇 번 겪은 끝에-_- 다음과 같은 트릭을 쓰면 방지가 가능하다는 걸 알았다.

if ( HAction.Run("InsertEndnote") )
{
//커서가 미주 밖
} else
{
//커서가 미주 안
}

 


[1] [javascript|자바스크립트] 특정 문자 모두 바꾸기 (replaceAll) 쉽게 사용하기 in 젠트의 프로그래밍 세상
[2] Is there a version of JavaScript’s String.indexOf() that allows for regular expressions? in stackoverflow
[3] http://0.30000000000000004.com/
[4] http://www.smbc-comics.com/?id=2999
[5] 내 백과사전 아래 한글 수식 관련 매크로 스크립트 2015년 8월 19일
[6] [자바스크립트] 실수로 반올림, 소수점 자릿수 지정, Round To Float, JavaScript in mwultong Blog
[7] How do I make the first letter of a string uppercase in JavaScript? in stackoverflow