사실 그동안 무슨짓을 했냐고 하신다면 먹고살려고 발버둥 쳤다고 밖에는 말 못하겠습니다. 하지만 먹고 살려고 하는 짓이라고 해도 그게 결국 먹고 살게 되면 문제가 되지 않지만 결국 발버둥에 그친다면...?


아무튼 그렇고 그런 발버둥이 있었습니다. 아직은 먹고 살만은한데 이러면 언젠가는 굶어 죽을지도 몰라요. 그래도 아직까진 희망은 있으니 그렇다고 해둡시다.


최근 Python가지고 이런저런 장난을 또 치고 있었습니다. 이 장난의 결과에 대해서는 나중에 제대로 올릴 예정인데 Python이란 언어가 재미있으면서도 선택의 기로에 섰다는 기분이 다분히 들고 있습니다.

사실 Python 홈페이지(https://www.python.org)홈페이지에 들어가면 두 가지 버전을 구할 수 있지요. Python 2.7과 Python3.x입니다. 그냥 쉽게 말해서 Python2와 Python3로 나뉘어진 셈인데 Python2는 2.7버전을 끝으로 더이상의 업데이트는 없다고 밝혔습니다. 그것도 2010년이었네요. 하지만 그 이후로도 2.7은 계속 쓰였고 아직까지도 2.7을 사용하는 프로그램들이 꽤나 있습니다. 사실 이해가 안 되는 것도 아닌게 Python3는 초기에 엄청 느렸습니다. 벤치마킹을 하면 Python2가 20%~50%정도 더 빨랐거든요. Python2와 Python3는 사실 겉으로보면 거기서 거기지만(80%정도 코드 재활용이 가능했습니다.)내부는 완전히 달라져서 Python3는 현대의 패러다임에 맞춰서 설계를 다시한 물건입니다.


이후 Python3는 2017년 지금 현재 상당한 성능개선이 이루어졌고 현대 하드웨어에 맞추어서 만들어졌으므로 Python2.7에 비해 효율도 상당히 개선되었습니다. 하지만 Python3초창기에 질렸던 사람들이 2.7을 고수하는 경우가 많은 것이 현실입니다. Python3의 개선점이 알려지며 많이 3.x로 교체가 이루어졌고 유명라이브러리는 3.x가 당연히 지원이 되고 있지만 문제는 개인 혹은 사내에서 사용하는 라이브러리가 아직까지도 2.7로 만들어져있는 경우가 많아서 2.7을 보안업데이트를 제외한 기능업데이트는 없다고 밝힌 지금까지도 이용되고 있습니다.


우리나라에서 Python이 제일 많이 쓰이는 곳은 어딜까요?

당연하게도 각종 서비스용 서버프로그램입니다. DB를 sqlite를 쓰고 Python으로 DB관리를 하면 굉장히 쉽게 사용이 가능합니다. 이외에도 모든 웹과 온라인 서비스를 Python으로 처리하는 경우도 많지요. 그런데 문제는 이런 서비스들이 2.x로 작성된 경우가 많아서 python3로 못 넘어간 경우가 많다는 점입니다. 이에 대한 원인으로 여러가지를 들 수 있지만 제일 큰 문제는 비용문제입니다.


사실 python2에서 python3로 넘어가는 것은 그렇게 큰 문제는 아닙니다. 코드의 80%가 재활용이 가능하고 대다수 라이브러리가 3.x호환이 되게끔 업그레이드가 이루어져서 약간의 노력만 하면 Python3로의 전환도 그렇게 어렵지는 않다고 합니다. 하지만 기존의 Python2기반의 서비스를 Python3로 전환하면서 몰랐던 버그가 발생할 수도 있고 (python2와 달리 python3는 무조건 유니코드기반이라 cp949를 기반으로 짰으면 고생길이 열리게 됩니다.) 충분한 테스트가 이루어지지 않으면 서비스가 중단되는 초유의 사태가 벌어질지도 모르기 때문에 이에 고민을 하는 것입니다. 그럴거면 일단 2020년까진 버티기로 버티고 그 다음 Python3로 넘어가도 늦지 않다는 생각을 가진것으로도 보입니다. 


사실 테스트? 조금 시간들이고 비용을 조금만 들이면 얼마든지 할 수 있습니다. 디버깅제대로 안 하고 서비스하다가 망한 것이 어디 한 두가지입니까? 원래 디버깅은 모든 개발에 필수코스입니다. 그건 서비스를 하는 중에도 이루어져야합니다. 그럼 지원기간까지 버티다가 전환하는 것은요? 우리는 WindowsXP를 떠올려야합니다. WindowsXP는 연장지원 2년을 통해 일종의 유예기간을 가졌지만 전환을 늦게하는 바보짓을 하는 바람에 한동안 혼란을 겪고 말았습니다. 그리고 NPAPI지원도 크롬에서 지원을 끊겠다고 발표를 했음에도 이를 미루고 미루다가 결국 크롬의 NPAPI지원코드가 완전히 삭제되고 나서야 부랴부랴 PPAPI로 전환을 시작했습니다. (그런데 그것마저도 엉망이라는 느낌입니다.)


Python2.7의 지원기간은 3년정도 남았습니다. 생각보다 길다고 느끼실지도 모르지만 시간은 생각보다 빨리 지나갑니다. 그리고 Python3의 성능이 Python2보다 더 좋아졌음이 밝혀진 지금 이젠 성능핑계도 댈 수가 없게되었습니다. 그런데 아직도 2.7을 고수하시겠다면...?


당신은 그저 과거의 향수에 젖어 현재를 보지 못하는 늙다리일 뿐입니다. 개발자가 늙다리같은 생각에 빠져있다면 그 프로젝트는 이미 망한 프로젝트인 것이지요.


아직 늦지 않았습니다. 당신의 프로젝트 이제는 Python3로 시작해주세요.


P.S 우분투도 그동안 라이브러리 문제와 일부 프로그램 때문에 Python2.7을 기본탑재하고 있었습니다. 하지만 16.04이후로는 기본 탑재프로그램들이 Python3.5를 지원하고 있어서 Python2대신 Python3.5를 기본 탑재했습니다. 물론 Python2.7을 설치하지 못하는 것은 아니지만 저장소에서 python2.7이 사라질 준비를 하는 것으로 보입니다. 그때가 되면 python명령은 python2.7이 아닌 python3를 실행하는 명령이 되겠지요.


P.S2 업데이트가 굉장히 빠르기로 유명한 Arch는 python명령을 쓰면 Python3가 실행된다고 합니다. 버전업도 빠르기 때문에 무조건 최신버전이 뜨는 것이지요.

만약 아치를 쓰시는 분이 계신다면 터미널에서 python --version 명령을 쳐보세요.


P.S3 사실 이 글은 제 자신한테 하는 말입니다. Python으로 장난을 치는데 저도모르게 Python2스타일로 코딩을 하고 있더군요. 무의식적으로 Python2가 손에 너무 많이 익어버린 것 같습니다. 나름 의식하고 코딩을 하고 있지만 익숙함에서 나오는 그것은 정말 무서운 것이었습니다.

,

오늘은 짧게 고찰만 잠깐 할려고 합니다. 작년까지만 해도 한달에 4~5개 정도 글을 올리는 것이 다였는데 요즘 너무 달린 것 같아서 제 자신도 어리둥절하네요.


임베디드기기에 대해 얼마나 알고 계시나요?


Embedded 사전을 찾아보면 내장된, 내장형인, 품고있는 등으로 해석이 됩니다. 즉 Embedded OS란 내장형OS란 의미입니다. Windows나 우리가 사용하는 일반PC용 배포판과 다르게 특정기기에 내장되어 사용되는 OS란 의미입니다. 그런데 최근에는 경계가 많이 모호해져서 단순펌웨어 수준인데 OS로 취급되는 것도 있고 OS라고 하지만 알고보면 그냥 펌웨어수준인 경우도 있습니다.


대표적인 것이 NAS로 유명한 시놀로지입니다. 시놀로지OS는 NAS구동에 쓰이는 일종의 임베디드OS이자 펌웨어인데 리눅스기반이라서 일반PC용으로 포팅이 이루어졌습니다. 역으로 리눅스 기반이라 기능확장도 뛰어나지요. 엄밀히말하면 NAS용 펌웨어지만 범용OS급의 확장성과 이식성을 갖추고 있다는 의미입니다. 이쯤되면 그냥 범용OS수준이지요.


범용 OS는 만드는 것이 굉장히 어렵습니다. 수많은 부품들을 다 지원하는 것이 쉽지 않거든요. Windows는 뭐냐고 하시는 분들도 있겠지만 Windows도 일부장치와 호환문제로 곤혹을 겪는 경우가 많습니다. 산업용 장비들이 구형OS를 사용하는 이유이기도 합니다. 2017년 현재에도 DOS로 구동되는 장비들이 있고 보기 힘든 OS/2장비들도 현역인 곳이 아직 많습니다.


하지만 임베디드라면? 이야기가 많이 달라집니다. 일단 특정기기만을 지원하므로 다른 기기에대한 기능을 쳐낼 수있고 지원기기에 대한 특정 기능을 추가할 수도 있습니다. 다른 기기로 이식을 하는 일은 있을 수 있지만 해당OS를 그대로 사용할리는 없지요. 이런 쪽으로는 리눅스가 정말 딱이라는 생각이 들 수 있습니다.


임베디드기기는 PDA, 디지털 카메라, 스마트TV, 스마트폰 외에도 넓게 보면 로봇청소기, 은행ATM, 길거리 광고판, 산업용 장비 들도 특정 기기를 위한 세팅이 되어있으므로 임베디드기기라고도 볼 수 있습니다. 여기에 흔히 사용하는 IP공유기도 엄밀히 말하면 임베디드기기가 맞습니다.


그럼 여기서 임베디드 리눅스는 어디까지 자리를 잡고 있을까요?


아쉽게도 리눅스는 임베디드OS로 위상이 애매한 상황입니다.


임베디드기기는 그 자체로 상용제품이 될 수 있습니다. 그리고 지속적인 펌웨어 업그레이드를 통해 기기의 성능을 끌어올릴 필요가 있지요. 하지만 리눅스 커널을 기기에 맞게 수정하고 조합하는 일이 쉽지가 않습니다. 심한 경우에는 임베디드 기기를 만드는 곳에서 다 해결을 해야할 수도 있습니다. 회사같은 곳에서는 이런 것을 좋아하지 않습니다. 책임질 일만 늘어나는 셈이거든요.


예전의 아이스테이션이란 PMP가 있었고 OS로 임베디드 리눅스를 썼었습니다. 성능도 나쁘지 않았고 인기도 많이 있었는데 어느날 일부모델에 한해서 WindowsCE기반의 펌웨어를 새로 배포했었습니다. 왜 그랬을까요?


사실 아이스테이션은 신생업체였고 나름 대박을 쳤지만 경쟁업체(아이리버 등)에 비해 개발능력이 좋은 회사는 아니었습니다. 새로운 모델을 찍어내기 시작하고 해당 모델의 파생형이 생기는 등 라인업이 많아지면서 이를 관리를 해야했는데 이를 전부 관리하기가 어려웠을 겁니다. 회사의 규모가 작은 탓에 수많은 제품의 펌웨어를 관리하는 것이 힘들어졌고 소위 말하는 버려진 모델도 생겨났을겁니다. 그래서 상대적으로 개발과 관리가 쉬운 WindowsCE를 택한 것을 보입니다.


만약 지금이라면 안드로이드를 택하는 것이 좋은 생각이었을 겁니다. 하지만 안드로이드가 지금의 위상이 생기기 전에 아이스테이션이란 업체는 사라져버리고 말았습니다.


안드로이드 이야기가 나와서 말하는 것이지만 안드로이드는 과연 임베디드 리눅스라고 볼 수 있을까요? 안드로이드는 애매한 위치를 가지고 있습니다. 보통 임베디드 리눅스라고 하는 것은 우리가 흔히 사용하는 리눅스 프로그램들을 사용하지만 특정기기용으로 특화된 OS를 말하는 것인데 안드로이드는 임베디드OS는 맞지만 이 부분이 애매하기 때문에 임베디드 리눅스에 넣기도 하고 빼기도 합니다. 안드로이드 전용 애플리케이션을 쓰는 경우가 많거든요. 안드로이드를 빼는 순간 임베디드 리눅스의 점유율은 바닥으로 처박힙니다. 그만큼 기업시장에서 (안드로이드를 제외한)임베디드 리눅스는 그렇게 상황이 좋지 않다는 의미이기도 합니다.(물론 국내이야기입니다.)


다만, GBusTV에 우분투를 사용하고 있고 스마트TV 셋톱박스에 리눅스가 사용되는 것이 확인 되는 것을 보면 시장 점유율이 0이 되는 일은 없을 것이라는 생각이 듭니다. 다만, 책임문제라는 고질적인 문제가 해결되지 않으면 임베디드 리눅스가 임베디드 시장에 영향이 높아지기는 어려울 것이라고 생각합니다. POS기 해킹사건이나 블루스크린 광고판이 나오는데도 Windows기반의 임베디드 기기가 시장을 잡고있는 이유는 책임소재가 명확하고 관리가 쉽다는 바로 그 점이 시장에서 먹히고 있는 것일겁니다.


P.S 공공부문이나 산업부문에서는 리눅스가 찬밥이지만 네트워크쪽은 리눅스만한 것이 없더군요. 거의 왠만한 장비는 유닉스가 50% 리눅스가 거의 50%입니다. 다만 이쪽은 책임소재가 명확하고 이미 검증된 경우가 많아서 그런것으로 보입니다.


P.S-2 안드로이드가 리눅스가 맞기는 하지만 시장에서는 임베디드 리눅스라고 하지 않고 안드로이드라고 따로 지칭을 합니다. 즉, 리눅스커널을 쓴 별도의 OS로 취급한다고 생각하시면 될 것 같습니다. 몇몇 임베디드 기기의 카탈로그들을 참고 했습니다.

,


추억의 게임입니다. 프린세스 메이커3 전작인 2가 워낙 명작이어서 평가절하 당하는 경향이 있지만 어쨌건 가상의 딸을 키운다는 게임컨셉은 그대로이고 나름 숨겨진 내막도 있어서 그냥저냥 하는 사람이 꽤 있습니다.


무엇보다 한국초기판(만트라 유통)은 일본판보다 더 좋은 음악과 더 좋은화질, 더 좋은 더빙으로 한국판이 훨씬 더 훌륭한 몇 안 되는 게임입니다. (사실 프린세스 메이커 시리즈는 한국에서 어마어마한 히트를 쳤기에 유통사에서도 엄청 신경을 썼습니다.)


다만... 이 버전이 조금 문제가 있는게 우분투에서 실행하기 좀 빡셉니다. 사실 WindowsXP이후 버전에서도 비슷한 문제가 있는데 Wine의 발전과 더불어 기존 Windows95와의 호환성은 내다 버린지 오래다보니 Wine에서도 XP호환 패치없이는 구동이 되지를 않더군요. 결국 기존 만트라 유통판은 구동을 포기했고 XP에서도 정상적으로 구동되는 후지쯔유통(혹은 주얼판)버전을 이용하니 구동이 가능했습니다.


2017년 현재 시스템에서 구동을 위해서 대부분 사람들은 후지쯔판과 만트라판 2가지를 모두 구한뒤에 후지쯔판 설치 후 만트라판 데이터로 교체해서 플레이를 하고 있습니다. 우분투도 Wine이 최신 시스템에 맞춰져서 구동이 되고 있으므로 이를 따를 수밖에는 없습니다. 따라서 후지쯔판과 만트라판 두가지를 모두 구하셔야 합니다.


https://www.tooli.co.kr/gametip/953476

여기 보시면 어떻게 구동해야하는지 써있습니다. WindowsXP이후 구동방법에 대해 나온 것이지만 2017년 현재 Wine에서의 구동도 이와 별 다르지 않습니다.


만트라판 데이터의 경우 따로 구하기 어렵진 않은데 만트라판만의 특징인 CD원음 BGM을 들으실려면 필수불가결하기 때문에 무조건 필수입니다! (SoundTeMP에서 편곡한 것으로 확실히 MIDI보다 낫습니다. 한 번 들으면 다시는 MIDI로는 듣기 싫으실 겁니다.)


그러므로 만트라판과 후지쯔판 두가지를 모두 구하셨다는 가정하에 우분투에서의 구동에대해 설명 드리도록 하지요.


기본적으로 Playonlinux를 이용합니다.

그리고 도구-Wine 버전 관리에 들어가서

x86용 2.x 버전의 Wine을 설치합니다. 기존에 설치된 Wine이 있다면 이를 이용하셔도 상관은 없습니다. (전 2.7버전을 사용했습니다.)


마음에 드는 Wine을 설치한다. 여기서는 2.0이후 버전을 이용할 것이다.



CDemu를 설치합니다. (http://moordev.tistory.com/167)이는 CD-DA음원을 듣기 위해서이며 MIDI음원이 워낙 구리기 때문에 MIDI는 추천하지 않습니다. (별도의 괜찮은 사운드폰트를 쓰신다면 상관은 없습니다.)


그리고 겸사겸사 CD인식도 시킬겸 설치하는 겁니다. CD-ROM이 없으면 또 실행이 안 되는데 그 CD-ROM검사도 통과하고 CD원음의 BGM도 들을겸 하는 것이지요.


그 다음 CDemu에서 가상드라이브를 2개이상 만들어야 합니다. 왜냐하면 하나는 후지쯔판 설치CD를 넣어야 하고 다른 하나는 만트라판 2번 CD(배경음악 재생용)를 넣어야 하거든요. 후지쯔설치CD도 CDemu로 하는 이유는 설치CD가 드라이브에 없으면 CD-DA도 지원이 되지를 않습니다. 이유는 전혀 모르겠지만 약간의 버그로 추측됩니다.


이런 식으로 드라이브 하나에는 후지쯔판 설치CD를 다른 하나는 만트라판 2번CD를 넣고 PlayonLinux에서 설치를 시작합니다.


Playonlinux의 설치버튼을 누르신다음 Install a non-listed program을 클릭합니다.

왼쪽 아래에 있다

Install a new Virtual Drive를 선택합니다.

그다음 적당한 이름(PM3 혹은 PrincessMaker3 정도)을 적고 넘어갑니다.


그 다음 위 스크린샷처럼 Use another version of Wine과 Wine 설정 두가지에 체크를 합니다.


이전에 추가한 2.x버전의 Wine을 선택해주시고 32bits Windows로 선택합니다. 64비트가 아닌 32비트인 이유는 Wine설정을 보시면 아실 겁니다.


그다음 Winemono나 WineGecko따위는 안 쓸거니까 다 취소하고 Wine설정 창이 나오면 다음과 같이 설정합니다.


윈도우버전은 Windows95 혹은 Windows98로 하고 그래픽탭에서 가상데스크탑 흉내내기에 체크를 합니다. 이유는 어이없게도 제목표시줄이 사라지는 버그가 있어서 그렇습니다. 창관리자가 꾸미지 않게해도 된다고 하는데 전체화면에 들어가면 그대로 얼어버리는 버그도 있어서 가상데스크탑 흉내를 사용하는 것이 좋습니다.


CDemu를 이용하셨다면 알아서 설치CD를 찾아서 실행을 합니다. 바로 다음을 누르면 이제 게임의 설치를 시작할 수 있습니다.



위의 스크린샷처럼 순서대로 하시되 시작메뉴등록과 프로그램등록/삭제에 체크를 풀어주시기 바랍니다. 만약 체크를 하시고 다음버튼을 누르시면 DDE어쩌고 하는 에러메시지를 보게 될겁니다.


설치가 끝난다음 CDMenu를 닫으시면

이렇게 해서 아이콘을 만듭니다.


이제 게임설치가 끝났으니 만트라판 데이터를 덮어야겠지요.

사실 만트라판 CD1번에서 추출해도 되지만 그냥 귀찮아서 따로 데이터를 만들었습니다.

https://drive.google.com/file/d/0B575ztEFv5-UMWR6RW15NTlsS3c/view?usp=sharing


위의 링크에서 받은 압축파일을 일단 풀어둡시다.


그다음 Playonlinux에서 PM3WIN아이콘을 클릭한 다음 구성버튼을 클릭합시다.


그 다음 기타설정탭에 들어가서 프로그램의 디렉토리를 열기를 클릭하면 PM3WIN.exe가 있는 폴더가 열립니다. 여기의 위에서 다운로드 받아 압축을 풀어놓은 만트라판 데이터를 덮어버리면 한국어 더빙이 들어가게 됩니다.


자 이제 실행을 해봅시다. CDemu에는 후지쯔판 설치CD와 만트라판 2번CD가 둘다 들어가있는 상황이어야 합니다.


처음 실행하면 16bit모드가 어쩌고하는데 지금 시스템에서 32비트구동은 아무런 문제가 없습니다. 그냥 무시하고 확인을 합니다.


그 다음 만트라 로고가 나오고(만트라 패치를 안 했을 경우에는 후지쯔로고가 나옵니다.) 타이틀화면이 나오게 됩니다. 아직까지는 아무런 음악이 들리지 않습니다.


위쪽의 환경설정 버튼을 누르시면 이제서야 CDDA설정을 할 수 있다는 것을 알게 됩니다.

여기서 BGM을 CDDA연주로 하시고 OK를 누르시면 됩니다. 효과음은 PCM을 하시거나 DirectSound를 하시거나 큰 차이는 없습니다. Wine입장에서는 결국 똑같이 처리하거든요. 이제 NEW GAME을 시작하시거나 기존 게임을 시작하시면 CD-DA음원으로 우분투에서 프린세스 메이커3를 하실 수 있습니다!



다만....CDemu가 굉장히 귀찮군요. 이건...어쩔 수 없을 것 같습니다. CD넣다뺐다 하는 것보단 나으니까 그냥 넘어갑시다. 배경음악이 한번만 재생되는 것은 그냥 Wine상 버그로 취급하면 될 것 같습니다. Windows7이후에도 같은 증상이 보이는데 이건 방법이 없는 것 같습니다. 그냥 한번만 듣고 넘어가야 할 듯 합니다.



어쨌건 오늘도 삽질 끝.

,