Recent Posts
Recent Comments
04-19 00:01
관리 메뉴

동글동글 라이프

Morse (모스 부호) 본문

개발자 이야기/Perl

Morse (모스 부호)

동글동글라이프 2009. 1. 29. 03:34



군생활에서 나의 보직은 다른 사람들에 비해 조금 특화된 보직이었다.

군대에서 여러 능력을 배우는 중, 모스부호도 익히게 되었는데

처음에는 듣는것을 바로바로 해석하기에 급급했던 모스 부호였지만

익숙해 지고 나서는 모스부호로 동기들과 서로 대화도 하고 재밌게 지냈던 기억이 난다.



그때의 추억을 되살려 프로그래밍에서는 모스부호를 어떻게 다룰 수 있는지,

모스 부호에 대해서 간단한 포스팅을 해 보겠다.



- 모스부호란?

짧은 전류(.)과 발신 전류(-)을 적절히 조합하여 알파벳과 숫자를 표기한 것으로,

미국의 발명가 새무얼 필리 브리즈 모스가 고안했다.


- 모스부호 코드 (Alphabet)



한글도 있지만 일단 로마자만...



- 모스부호의 사용

모스부호를 사용한 대중적인 작품들이 상당히 많지만 최근에 나온 영화 몇가지만 소개하겠다.




영화 이글아이에서 주인공의 쌍둥이 동생인 이든은 핸드폰의 깜빡임을 이용하여

모스부호를 보내 메모리 칩의 숨겨진 장소를 전달하는 장면이 나왔다.

모르스부호는 깜박임으로 신호를 보내는것이 가능하기 때문에,

우리가 생활하는 일상 속 어딘가에서도 모스부호가 나오고 있지 않을까?





그리고 "벼랑위의 포뇨" 라는 애니매이션에서는

배를 타고 항해하는 아버지가 사정상 집에 들르지 못하자 

벼랑 위의 집을 향해 모스 부호를 주고 받으며 서로의 마음을 전달하는 모습이 나왔는데...

모스 부호를 통해 사랑도 고백하고 서로 싸움도 하였다.

딱딱한 모스부호를 일반사람들에게 쉽고 재미있게 다가간 애니매이션.





영화 렛미인에서는 두 소녀가 벽을 사이에 두고 톡, 톡톡, 스르륵 톡, 하며 모스 부호를 사용하여 대화를 한다.

둘이 영원히 하나가 될 수 없는 것처럼 톡, 톡, 끊어지면서 이어지는 소리가 슬프다.

많은 사람들이 렛미인을 시청한 뒤 모스부호를 배우고 싶다는 후기를 남겼다.



- 개인적인 사용

처음 모스부호를 배울 때, 한글과 영문이 모두 가능하다는것을 알고,

맘에 드는 여자분의 미니홈피에 모르스부호로 애정표현을 했었다.

그때의 마음으로는 어떻게든 좋아한다는 것을 전달하고는 싶지만 표현력이 부족하고

부끄러움이 많은 탓에 이러한 방법을 택했다.

웬 미친 소리야 라는 소리를들으며 그 글은 삭제 되었지만

나의 마음을 전달했기에 뿌듯했던 기억이 든다.



- Perl 을 사용한 모스 부호 구현

CPAN 에서 morse를 검색시 여러가지 모듈이 검색이 되는데 그중에서 2가지 모듈을 소개하겠다.

 

Convert::Morse

Convert between ASCII text and MORSE alphabet 
Convert-Morse-0.06 - 26 Feb 2008 - Tels


최근에 만들어진 모듈인 만큼 성능도 좋을것이라 생각되는 Convert::Morse 모듈


Text::Morse

Perl totally useless extension for Morse code
Text-Morse-0.01 - 19 Jul 2001 - Ariel Brosh (PAUSE Custodial Account)



2001년도에 만들어진 Text::Morse 모듈

두 모듈을 설치 한뒤 테스트를 해보니 잘 실행이 되는것을 확인 할 수 있었다.



1
2
3
4
5
6
7
8
9
10
11
use Text::Morse;

my $morse = new Text::Morse;
print scalar($morse->Decode("... --- ...")),"\n";
print scalar($morse->Encode("Adam Bertil")),"\n";

use Convert::Morse qw(as_ascii as_morse is_morsable);
print as_ascii('.... . .-.. .-.. ---  -- --- .-. ... .'),"\n"; # 'Helo Morse'
print as_morse('Perl?'),"\n";                # '.--. . .-. .-.. ..--..'
print "Yes!\n" if is_morsable('Helo Perl.'); # print "Yes!"
print map{ s/\./돈/g;s/-/쯔/g;$_; } as_morse('Perl?');



Output:

1
2
3
4
5
6
7
SOS
.- -.. .- --
-... . .-. - .. .-..
HELLO MORSE
.--. . .-. .-.. ..--..
Yes!
돈쯔쯔돈 돈 돈쯔돈 돈쯔돈돈 돈돈쯔쯔돈돈

http://perlkr.codepad.org/v99N9guf

보기에도 Convert::Morse 모듈이 훨신 변환이 편한것을 알 수 있다.

마지막에는 .을 돈으로 -를 쯔로 표현하여 한글로 읽는 표기법으로 바꿔보았다.

마찬가지로 돈과 쯔를 다시 .과 -로 표현하는 방법도 간단하다.



당연하겠지만 한글 Morse부호 변환 모듈은 존재하지 않았다.


이 부분은 예전에 내가 만들었던 모듈로 간단하게 해결을 할 수가 있는데

이전에 포스팅했던 글 중 한글 문자열이 영문타자로 변환 코드글에 있는

Lingua::KO::Hangul::Util 모듈을 사용하여 조금만 수정하면 한글을 일단 영문으로 변환한 뒤

영문을 다시 모스 부호로 변환하면 되는 것이다.


1
2
3
4
5
6
7
8
9
use strict;
use warnings;    
use Hangle qw/transformation/;
use Convert::Morse qw(as_morse);
my $key = "민영씨사랑해요";
print "Text  : $key\n";
$key = transformation($key);
print "Trans : $key\n";
print "Morse : ".as_morse($key),"\n";


Output:

1
2
3
Text  : 민영씨사랑해요
Trans : MUFKSKGGUGEVEKJEUKN
Morse : -- ..- ..-. -.- ... -.- --. --. ..- --. . ...- . -.- .--- . ..- -.- -.


http://perlkr.codepad.org/YGsEykat


모르스부호를 다시 한글로 변환하기는 짜기가 귀찮아서 패스~ 흠흠;;



- 후기

업무상으로 모스 부호를 사용했기에

그때 당시에 이런 모듈을 알고 썼다면 상당히 많은 도움이 되었을 것이며,

고참들에게 사랑을 듬뿍 받을 수 있었을텐데... 라는 아쉬움이 든다.


모스 부호에 관심이 있다면 마지막으로 이 메세지를 한번 해석해 보라!


.... .- .--. .--. -.--  -. . .--  -.-- . .- .-. -.-.--


Good Job~!

참고 :

- 모스부호

http://ko.wikipedia.org/wiki/모스_부호

http://www.wrvmuseum.org/morsecode/morsecodehistory.htm

- 모듈

http://search.cpan.org/~schop/Text-Morse-0.01/Morse.pm

http://search.cpan.org/~tels/Convert-Morse-0.06/lib/Convert/Morse.pm

http://search.cpan.org/~sadahiro/Lingua-KO-Hangul-Util-0.23/Util.pm

- 매개체

http://blog.naver.com/overgold?Redirect=Log&logNo=110039857425

http://skyelove.tistory.com/86


'개발자 이야기 > Perl' 카테고리의 다른 글

Perl Study 카페 생성  (11) 2009.02.19
perl을 사용한 자신의 IP 주소 얻기  (7) 2009.02.08
Perl로 짠 IRC Bot  (1) 2009.01.13
역 해시 (Reverse Hash)  (4) 2009.01.11
irc 로그 분석  (0) 2009.01.08
Comments