Docker는 이미 서버관리에서 필수가 된지 오래입니다.

https://www.docker.com



고래가 컨테이너들을 잔뜩 얹고 있는 이 모양은 바로 Docker가 나가고자 하는 방향을 나타냅니다. 


사실 Docker가 가지고 있는 가능성은 무궁무진합니다. 리눅스 컨테이너를 가상화하여 리눅스 프로그램을 정해진 환경에서 구동할 수 있게 만드는 것으로 특화 되어있습니다. 


이는 이미 우리나라에서 Docker에 대해 알고자 할 때 추천되는 바이블인 "가장 빨리 만나는 Docker"란 책에서도 나와있습니다. http://pyrasis.com/docker.html


그동안 서버를 구성하고자 하면 고생하는 것이 이만저만이 아니었습니다. 어떤 배포판은 /usr/lib에 서버가 설치되고 관리되면 어떤 배포판은 /usr/lib는 대몬만 설치되고 설정은 /etc로 관리됩니다. 또 어떤 배포판은 /usr/local에 설치됩니다. 제각각으로 관리되던 서버 설정 및 설치과정을 한큐에 해결하게 만든 것이 바로 docker입니다.


예를 들어 웹서버를 하나 구성하고자 한다고 하면 Nginx+PHP+MariaDB로 보통 구성됩니다. 그런데 배포판이나 OS마다 각 서버를 연동시키려면 고생이 이만저만이 아니었습니다. 어떤 배포판은 PHP를 CGI형태로 구동하고 어떤 배포판은 nginx로 하면 안 되고 Apache로 해야만 구동이 되는 등 중구난방이 따로 없었습니다. 10년 전에 Apache+Tomcat(JSP)을 하려고 할 때 서버를 뒤집어 엎어서 구성해야 가능했던 것을 생각하면 어휴...


하지만 Docker를 쓰면 미리 구성된 배포판과 서버 대몬이 그 어떤 리눅스 위에서도 문제없이 구동이 됩니다. 모든것이 완성 되어있기에 그냥 Docker 컨테이너를 올리는 것으로 서버 구성이 끝나게 됩니다. 그리고 그렇다는 것은 그동안 서버 관리자를 괴롭혔던 배포판별 판이한 구성 문제가 없다는 이야기가 됩니다.


사실 이전에 저도 비슷한 것을 구상하긴 했습니다. 다만 Docker같은 컨테이너가 아니라 VirtualBox를 이용한 돈없는 자를 위한 Sphere(VMware)를 구성했습니다. 성능은 당연히 VirtualBox이기에 영 아니었고 50%이상 성능이 까였기에 그냥 Sphere를 구입하는 것이 100배 나은 물건이었습니다. 장점은 VirtualBox라서 윈도우도 올리는 것이 가능했단 점 정도? 좋은 것은 하나도 없었습니다.


지금은 서버라면 다들 Docker로 구성해서 컨테이너를 올리는 것 만으로 서버구성을 끝내는 것이 대세입니다. 하지만 docker라는 이 녀석을 서버용으로만 사용하는 것이 좋을까요?


사실 저는 이미 Docker를 데스크탑에 적용해서 사용하는것을 블로그에 올린적이 있습니다.

http://moordev.tistory.com/180


의외로 방문율이 높은 포스트 중 하나이다. 이 글은 한글2008을 구동하는 것 뿐 아니라 원격 X프로토콜을 가지고 노는 기술도 포함되어 있다.


바로 한글2008을 배포판 관계없이 설치해서 사용하는 것을 docker를 써서 하는 것으로 만들었습니다.


즉, Docker를 서버만 쓰지 않고 데스크탑에도 적용해서 사용하단 것을 보여 드렸습니다. 


그냥 GUI를 Docker에서 굴리기 위해 만들어진 프로그램도 있습니다. X11Docker란 프로그램입니다.

https://github.com/mviereck/x11docker


이쪽은 그냥 데스크탑을 컨테이너화 해서 굴리는 것을 목표로 합니다. 그냥 다른 배포판을 쓰는 것이 가능합니다. 우분투에서 데비안을 혹은 페도라를 얼마든지 구동할 수 있다는 의미입니다. VirtualBox등을 통해 설치후 사용하는 것이 아닌 성능저하 거의 없는 가상화 리눅스를 그냥 얻어 내는 것입니다. 특히 몇몇 프로그램의 경우 라이브러리를 맞춰준다던지 파일 경로를 만들어서 묶어준다던지 해야하는 경우가 많은데 이렇게 하면 리눅스 데스크탑도 Docker를 통해 삽질 없이 바로 사용가능하게 만들 수 있다는 의미가 됩니다.


사실 저 X11Docker는 제가 유심히 보고 있는 프로젝트입니다. 엄청 유용할 것으로 예상되는데다가 32비트 우분투의 배포가 중단되고 있는 지금 구형 프로그램을 굴려야 할 때 굳이 오래된 우분투를 설치하지 않고도 최신 배포판에서 구형 프로그램을 굴릴 수 있게 하는 아주 좋은 프로젝트라고 생각하고 있습니다. Wine 1.0이라던가 한글2008이라던가 혹은 MATLAB 구형같은 오래된 프로그램이 있을 수 있겠지요!


그렇게 쓰다가 조금 시스템이 꼬인다 싶으면 그냥 컨테이너를 내렸다가 다시 올리면 됩니다. 참 쉽죠?


Docker를 굴리는 방법에 대한 이야기는 아까 말한 가장 빨리 만나는 Docker를 추천하고 저는 Docker를 다른 방법으로 사용하는 것에 대해 말씀드렸습니다. Docker를 서버외의 용도로도 쓸 수 있다는 것을 알아 주셨으면 좋겠습니다.

,

GAME. 번역하면 오락.


대체 게임이란 무엇일까요?

사실 게임이라고 하면 요즘은 대부분 전자오락, 혹은 컴퓨터 게임등을 생각하지만 우리는 게임이라는 것이 그것만이 아니라는 것을 잘 알고 있습니다.


바둑, 장기, 윷놀이, 주사위 게임 등등

심지어 각종 운동경기(테니스, 축구, 야구 등)도 게임이라고 할 수 있지요.


이런 것은 전자 오락도 아니지만 엄연히 게임이 맞습니다.


그런데 대체 게임의 정의에 대해 말해보라고 하면 "게임이란 이런 것이다." 라고 정확히 말 해주는 이는 없습니다.


위키 낱말 사전에서는 이렇게 정의하네요. https://ko.wiktionary.org/wiki/%EA%B2%8C%EC%9E%84

정해진 규칙에 따라 노는 일.


네. 정확히 말하고 있습니다. 사전적으로는 정확합니다. 하지만 제가 원하는 답은 이게 아니에요.


역으로 말하겠습니다. 우리가 게임을 하는 이유는 무엇일까요?


게임을 싫은데 억지로 하는 경우가 있나요? 아니 뭐, 켠김에 왕까지 같은 TV쇼에서는 억지로 하다가 너무 싫어서 중간에 탈주하는 경우도 있지요.


이분은 엄연히 일 때문에 하는 것일 뿐. 좋아서 하는 것은 아니다.(하지만 방송인으로서 방송이 좋으니까 하는 것이라고 생각한다.)



그냥 우리끼리 일반적으로 게임을 할 때(축구나 야구 같은 운동 경기도 포함해서) 게임을 함으로서 얻는 것이 무엇일까요?


바로 "재미"입니다.


말 그대로 재미를 느끼기 위해서 하는 거에요.


저는 게임을 할 때 재미를 느끼지 못하는 순간 그건 게임으로서 수명이 다 했다고 보고 있습니다.


누구나 할 수 있고 준비과정도 필요없고 전 국민이 모두 알고 있는 게임이 하나 있지요.

가위바위보를 예로 들겠습니다.


가위바위보는 그것만으로 재미를 느끼지는 못 합니다. 여기에 뭔가가 덧붙여져야 진정한 게임으로 인정을 받지요.


지금 당장 나가서 아무나 붙잡고 가위바위보를 하자고 해보세요. 어느 누가 재미있어합니까? 규칙도 있고 목적도 있는데 하루종일 의미없이 가위바위보만 죽어라 해보세요. 아무도 하려고 하지 않을 겁니다.


왜냐하면 재미가 없으니까요. 즉, 이 순간 게임으로서 수명이 끝나게 되는 것입니다.

물론, 가위바위보는 보통 다른 게임의 보조적인 역할을 하는 게임이기에 딱히 그 자체로 게임을 완성하지는 못하지만 사전에 간단한 승부를 내야하는 게임에서는 가위바위보를 이용해서 처리하곤 하지요.


이해가 안 가신다고요?


그러면 축구를 예로 들겠습니다. 솔직히 말해서 동네축구라도 한 번 안 해본 사람은 없으리라 믿습니다. 축구공을 왜 차는 것인가요? 왜 다들 수비보다는 공격을 하고 싶어하는 걸까요? 그건 당연히 골을 넣는 것이 재미있기 때문입니다.


일반적으로 사람은 재미를 느끼고 재미를 위해서 살아간다고 해도 과언은 아니에요. 삶의 소소한 재미를 느끼기 위해서 지금 일을 하고 밥을 먹으면서 살아가는 것이지요. 노는 것도 돈이 있어야 가능한 세상이 되기는 했지만 어쨌건 재미를 느끼지 못하면 그게 무슨 삶입니까.


그렇기에 게임이란 일종의 삶에서 재미를 느끼기위한 장치 중 하나라는 것이지요.


최근에 나오는 각종 PayToWin게임들(이하 개돼지게임)이 왜 그렇게 욕을 먹는 것일까요?

개돼지게임들은 재미가 없으니까 욕을 먹는 것입니다. 개돼지 게임은 돈을 얼마나 바르느냐에 따라 승부가 갈리고 이미 게임을 시작하기 전에 승부가 결정났다고 보이니까 재미가 없는 것이지요.


이건 각종 프로 스포츠랑 비교함으로서 설명이 가능합니다.

매년 우승하는 팀이 우승하는 리그는 인기를 끌기 어렵습니다. 이런 팀은 관중 동원력은 좋지만 리그 전체로 봤을 때 새롭게 유입되는 관중은 적어집니다. 이건 해당 스포츠(즉, 게임)을 몰락 시키는 결과를 가져오지요. 물론 공은 둥글고 스포츠란 것이 개돼지게임이 절대 아니다보니 매일 지는 팀이 이기기도 하기에 이는 곧 해당 스포츠가 인기를 지속하는 원인이 됩니다.


가끔 이런 일도 있어야 재미가 있는 것이다. 브라질이 축구를 잘 하는 것은 아무것도 안해도 이길 수 있어서가 아니다. 출처 : http://www.yonhapnews.co.kr/international/2014/07/09/0606000000AKR20140709018300007.HTML


하지만, 개돼지게임은 무조건 돈을 많이 쓴 사람이 이깁니다. 내가 얼마나 잘했느냐보다 돈을 얼마나 썼냐에 따라서 게임의 승패가 갈립니다. 이러니 당연히 재미가 없지요. 딱봐도 상대는 이미 수십만원을 둘둘 바르고 나타났는데 이미 승부는 갈렸고 내가 아무리 용써봐도 상대는 꿈쩍도 안 하는데 무슨 재미입니까. 심지어 수십만원을 쓴 상대는 양민학살이 재미있으니까 하는 것인데 하지말라고 할 수도 없습니다.


그러다가 유입 인구가 적어지면 아무도 안 하는 게임이 되겠지요.


사실 모든 게임 기획자, 게임 제작자, 게임 디자이너 모두 게임을 만들때 재미를 느끼게 하기 위해 많은 노력을 합니다. 하지만 그 재미가 없어진다면 그건 게임이 아니라 그냥 일이 됩니다. 그냥 카피 게임도 무작정 카피하는 것이 아닌 카피하는 게임이 왜 재미가 있는지 알고 카피를 하면 나중에는 나름 독특한 게임이라고 인정을 받게 됩니다.


따라서 저는 게임을 이렇게 이야기 합니다.


게임이란

"재미를 느끼기 위해 하는 모든 행위 그리고 그렇기 위해 하는 규칙과 놀이"


여기서 벗어난 순간 그것은 더 이상 게임이 아닙니다.

,

윈도우10이 기본 테마 https://b00merang.weebly.com/windows-10.html 여기서 만든 테마를 넣었다. 아주 좋소!

하모니카 바탕화면(http://hamonikr.org/board_KtxL32) 에 올라온 것을 적당히 추려서 추가해 넣었다.

정말로 워드 아닙니다. 테마를 설정했더니 워드 아이콘이 박혀버렸습니다.

우분투18.04가 발표된지 꽤 지났습니다.


처음에 조금 문제가 많았지만 그래도 많이 안정화 되었고 이제 우분투 18.04로 업그레이드를 조금 생각해봐도 좋을 시기가 되었습니다.


그렇기에 우분투... 는 아니고 우분투 마테(ubuntuMATE)를 한국어로 설정한 이미지를 공유합니다.


사실 그동안 쭉 공유해왔던 리눅스민트 한국어버전이나 우분투 16.04기반 한국어화 버전과 큰 차이는 없습니다. 제가 따로 만들어 넣은 것도 없고 추가 번역을 한 것도 없습니다. 오로지 깔고 귀찮은 작업을 하는 사람들이 없는 것을 바라는 마음에서 세팅을 완료한 버전을 공유하는 것이지요.


이번 우분투 마테 한국어 버전의 기본 버전과 다른 수정 사항은 다음과 같습니다.


1. 한국어 설정 완료(물론 설치할 때 설정합니다.)

2. 한국 시간 설정 완료(물론 설치할 때 설정합니다.)

3. 기본 한글 입력기 fcitx 설정 완료

4. 기본 키보드 한국어 104키 호환 레이아웃(노트북 한/영키 지원)

5. 한컴 뷰어 설치

6. arkzip 설치(Egg, Alz 해제 가능)(https://github.com/Thestars3/arkzip)

7. Bleachbit 설치(캐시 등 찌꺼기 제거 프로그램)

8. 깨진 한글 파일명을 고쳐주는 Filename-Repairer 설치

9. BriskMenu 일부 자체 한글화

10. 기본 저장소 카카오 미러(mirror.kakako.com)로 설정

11. Windows10테마 기본 설정(https://b00merang.weebly.com/windows-10.html)

12. 기본 배경화면 일부 추가(하모니카 바탕화면 자랑 게시판 이미지 http://hamonikr.org/board_KtxL32)

13.Spoka-Han-Sans 폰트 설치(https://spoqa.github.io/spoqa-han-sans/ko-KR/)

14. Gabia 폰트 설치(https://company.gabia.com/font)


Windows10테마를 설정하는 방법은 http://moordev.tistory.com/238 여기를 참고하세요. 이런 식으로 만들었습니다.


다운로드:

https://drive.google.com/open?id=1nsrwa9wld7DLfvHiciqJcgzndUNOev0s


MD5:

47260ae1d6b9a7a1b791b36ba5efd97a  ubuntu-mate-18.04.0-2018.05.02-desktop-amd64.iso

,

정확한 이유는 알 수 없으나 일부 사람들에 한해서 우분투 업데이트를 시도 하던 중에 dpkg(설치 프로세스)가 랜덤하게 튕기는 증상이 있었습니다.


지금은 다시 정상화 된 것처럼 보이는데 어떻게 될지는 아직 저도 확신을 할 수 없습니다.


아마도 제 예상에는 우분투 18.04 업그레이드를 위해 과도한 업데이트 요청이 쏟아지면서 각 업데이트 미러 서버 동기화에 문제가 생긴것이 아닐까 싶습니다.


웃긴것은 업데이트가 알 수 없는 오류로 중단 된 이후 다시 업데이트를 시도(apt upgrade)하면 또 업그레이드가 정상적으로 된다는 것입니다.


아마도 우분투 출시 초기의 혼란으로 보이므로 만약 패키지 설치 중 오류가 발생하신다면 차분하게 다시 시도를 해보세요. 혹은 상대적으로 넉넉한 용량을 확보한 하루카상 서버(부경대) ftp.harukasan.org 를 이용하시면 문제가 해결될 가능성이 높습니다.


단, 한번 잠깐 오류가 나는 것이 아닌 만약 패키지의 지속적인 설치 오류가 난다면 그것은 문제가 있는 것이니 꼭 버그리포트를 해주시기 바랍니다.

,

우분투 관련 이야기지만 우분투 분투기가 아닌 리눅스 관련 이야기로 올립니다.


우분투 18.04의 정식판 공개일이 코앞으로 다가왔습니다.

이번 우분투 18.04는 기존 우분투 16.04LTS에서 4.15 커널과 그놈 환경 이용 등으로 획기적인 변화를 가져올 예정입니다. 다만, 기존 16.04가 처음 나왔을 때 호환문제로 고생을 한 기억이 있어서 바로 18.04로 넘어가는 것은 조금 무리가 있다는 판단이 듭니다.


1. Wayland에서 다시 Xorg로 돌아가다.


이번에 18.04에서 생각해봐야 할 것은 17.10때 적용되었던 wayland의 적용을 뒤로 미뤘다는 것입니다. Wayland는 Xorg를 대체할 차세대 GUI서버로 작은 크기와 빠릿한 반응으로 기대를 받고 있습니다. 아니, 유망주로 몇년째 담금질을 하고 있습니다.


다만, 기존에 Xorg기반으로 만들어진 프로그램이 워낙 많고 Wayland의 호환레이어인 Xwayland가 완벽한 호환을 보여주지 못하고 있어서 17.10시절 고생을 한 사람이 많다고 하네요. 그래서 이번 18.04는 Wayland 대신 Xorg를 기본 서버로 되돌리고 옵션으로 Wayland를 쓸 수 있도록 했다고 합니다. 일단은 그래도 LTS니까 Wayland는 조금더 지켜보기로 한 것입니다. 아마도 Wayland로 전환되기까지는 사운드쪽의 OSS에서 ALSA로 넘어가던 시절만큼 시간이 오래걸리지 않을까 싶습니다.



2. 32비트 버전의 이미지 배포 중단


 이젠 32비트버전의 배포판을 더 이상 만들지 않겠다고 합니다. 하지만 32비트 라이브러리는 계속 지원을 할 것이라고 합니다. 아직은 32비트를 버릴 수는 없으니까요. (특히 Wine과 Windows의 32비트 프로그램, 그리고 일부 32비트용 게임 때문에 32비트는 어쩔 수 없습니다.)그러므로 아마도 리눅스민트나 다른 우분투 기반 OS에서는 32비트 버전이 나올 가능성이 높습니다. 특히 저사양PC의 재활용을 중점적으로 다루는 LXLE(http://lxle.net/)같은 경우에는 32비트 버전이 나오지 않으면 위치가 애매해집니다.


32비트 문제로 엑소더스가 일어나지는 않을지 지켜봐야 할 것 같습니다.


Windows의 경우 16비트에서 32비트로 넘어가기까지 꽤 걸렸던 것 같은데(32비트는 그 전부터 쓰이고 있었지만 WindowsMe를 마지막으로 16비트 코드가 사라지게 됩니다.) 32비트에서 64비트로 넘어가는 것은 더 오래걸리고 있어서 우분투가 먼저 선수를 치는 것 같네요.


생각해보니 64비트OS도 리눅스에서 먼저 나왔던 것을 생각하면 이해 못할 일은 아니라고 봅니다. (WindowsXP x64 2005년 출시, AMD64 리눅스 커널 2003년 릴리즈)


3. 커널 4.15의 적용

 

 이번에 각종 보안 이슈로 인하여 걱정이 이만저만이 아닌 사람들이 많습니다. 컴퓨터를 그냥 집에서 가지고 노는 용도로만 쓰거나 별 관심이 없는 사람들은 모르지만 멜트다운, 스펙터 버그로 인하여 업무용으로 사용하는 사람들은 걱정이 이만저만이 아니었습니다.


 그러한 버그를 해결한 커널이 4.15입니다. 물론 바닐라 커널 기준으로 4.15부터 패치가 적용되었지만 배포판 업체에 따라서 이전 커널에 백포트되어 적용이 되기도 합니다.(레드햇 같은 업체는 커널 3.x대와 함께 2.6도 아직 지원합니다.) 하지만 백포트는 어디까지나 백포트이고 메인 프로젝트는 리눅스재단의 커널이 만들고 있는데 이번 4.15부터 해당 버그해결과 사고를 일으킨 인텔의 ME를 걷어내는 작업까지 해 놓았습니다. 아마도 시스템 내부적으로 제일 큰 변화가 이것이 아닐까 싶습니다. 16.04에서도 바닐라 4.15를 쓰고 있는데 캐노니컬이 만드는 4.13보다 훨씬 낫습니다.


4. 데스크탑 리눅스의 기준


 이렇게 이야기하면 openSUSE나 Fedora를 쓰시는 분들이 쳐들어올 것 같은데 우분투는 데스크탑용 리눅스의 기준입니다.


 데스크탑에서 제일 중요한 것은 이용자의 편리함입니다. 흔히 UI를 이야기하지요. Gnome이 리눅스 데스크탑에서 주가 된 것은 사실 우분투의 영향이 컸다고 봅니다. 사실 우분투에서 Gnome이 제일 잘 돌아가기도 하고요. 게다가 Nvidia나 AMD는 자사의 클로즈소스 드라이버를 발표할 때 우분투 발표에 맞춰서 발표를 합니다. 이유는 리눅스 데스크탑 사용자들이 업그레이드하는 시기가 우분투 발표와 겹치기 때문입니다.


특히 우분투 LTS의 업그레이드는 이용자가 대거 업그레이드를 시도하는 시기이기 때문에 특히 드라이버를 만들 때 신경을 쓰게 됩니다. 지난 16.04발표후 Catalyst가 우분투 지원에서 내려가게 되었는데 대신 AMD는 AMDGPU-Pro라는 오픈소스를 기반으로 하되 클로즈 소스를 추가한(그러니까 오픈소스인 크로미움에 클로즈소스인 구글앱과, Flash를 추가한 크롬을 생각해보세요.)드라이버를 발표했습니다. 새로운 우분투가 어떤 변화를 가져올지 조금 지켜봐야 할 것입니다.


5. 수많은 우분투 변형판들


사실 우분투도 데비안의 변형판이고 리눅스의 계보를 따라가면 레드햇, 슬랙웨어, 데비안 이렇게 셋이라고 하지만 이젠 제 갈길 가기 시작해서 따로 놀기 시작한 우분투는 데비안과 구분을 지은지 꽤 지났습니다. 그 편리함 때문에 우분투를 기반으로 한 배포판은 상당히 많습니다. 우분투가 나온다고 하면 우분투 그 자체보다 변형판들을 기대하는 사람들이 훨씬 더 많습니다. 저도 사실은 Gnome3보다는 MATE를 선호하기 때문에 ubuntuMATE나 LinuxMint MATE를 기대하고 있습니다.


그런데 이번 18.04는 17.xx부터 편입 된 공식 변형판들의 LTS버전이 나오는 버전입니다. 공식 변형판들은 18.04라는 이름하에 우분투와 동시에 나오게 됩니다. 16.04와 비교해서 공식 변형판들이 상당히 많아졌습니다. 선택의 폭이 넓어졌다고 해야 할까요? 저는 LTS에 눌러앉는 경우가 많아서 17.xx는 써본적이 없습니다. 게다가 16.04가 꽤 잘 버텨준 덕에 계속 16.04를 고수해왔고요. 어쨌건 18.04가 나오면 18.04기반으로 업그레이드를 해야하는데 선택의 폭이 확실히 넓어진 것을 환영해야 할 듯 합니다.

(하지만 전 LinuxMint MATE로 그냥 갈 것 같습니다....)



우분투 18.04 Bionic Beaver를 기대하며... 이상 마치겠습니다.


P.S ubuntuMATE 18.04의 파이널 베타 버전을 써봤는데 베타인데도 상당히 안정적이었습니다. 물론 베타1때는 불안정해서 안되겠다 싶었는데 한 달 만에 안정화가 되었더군요. 18.04는 상당히 안정적인 버전이 될 것임을 예상합니다.

,

최근 헤드폰에는 노이즈 캔슬링 기능이 들어있는 경우가 많습니다. 이러한 것은 대개 추가 배터리를 요구하거나 USB포트 등이 달려있어서 이를 이용해서 각종 주변 소음을 막아냅니다.


그런데 이런 기능이 있다는 것은 알지만 이것이 대체 어떤 원리로 만들어지는지 아는 사람은 별로 없습니다.

심지어 노이즈 캔슬링은 그저 방음벽과 같은 원리겠거니 하는 사람도 많습니다. 아주 틀린 것은 아니지만 그런데 이런 사람들은 배터리나 추가 전원은 왜 들어가는지 모릅니다.


사실 주변 소음을 제거하는 방법은 두가지로 나뉘어집니다.


1. 완전 차폐를 하여 주변 소음이 들어오지 못하게 하는 방법

  - 방음벽이 이러한 방식으로 만들어집니다. 주변 소음을 흡수해버리지요.

  - 그리고 커널형 이어폰들이 최대한 차폐를 하여 만들어지는 대표적인 물건들이지요.


하지만 이러한 방식도 당연히 한계가 있습니다. 귀를 틀어막게 되면 귀에 강한 압력을 가하게 되고 이는 귀에 안 좋은 영향을 끼치게 됩니다. 그래서 커널형 이어폰 자체를 싫어하는 사람이 많습니다.



2. 역파장을 계산하여 이를 통해 캔슬링을 하는 방식


  - 이것이 바로 추가 배터리와 전원을 요구하는 이유입니다. 무슨 소리냐면 같은 2000Hz의 소리라도 파장이 180도 다른 두 소리를 합한다면


 sin(n)+sin(n+180°)=0


이를 이용해서 주변 소리와 반대되는 파장을 만들어 스피커로 보냄으로서 해당 소리를 듣지 못하게 하는 것입니다. 문제는 이를 계산하는 시간이 너무 느리면 180°의 파장이 아닌 애매한 소리가 된다는 것입니다. 그래서 실제로 스피커의 반응 속도에 맞춰서 튜닝을 하는 작업이 필요한데 이것이 노이즈 캔슬링 헤드폰의 가격에 가장 큰 영향을 미칩니다. 요즘은 그나마 계산 속도가 빨라져서 낫다고 합니다.


특히 좀 가격이 싼 물건은 너무 저음의 소음이나 너무 고음의 소리는 막지 못하는 것을 알 수 있습니다.


2000Hz 이하의 소리를 검출하기 위해서는 못해도 1/2000초 즉, 0.5ms 이상의 샘플링시간이 필요한데 0.5밀리초 이후에 소리가 난다는 것은 이미 캔슬링되지 못하고 귀에 들어갔다고 봐야합니다. 캔슬링의 의미가 없지요. 너무 고음의 소리는 180도를 정확히 만들기가 쉽지 않습니다. 파장이 굉장히 빠르기 때문입니다. 잘못해서 90도로 만들어진다면...


sin(n)+sin(n+90)=2sin(n)


없애기는 커녕 도리어 소리가 커지게 됩니다.


보통 사람이 들을 수 있는 소리가 20~20000Hz정도이고 이것도 나이가 어린 경우에만 가능한 것이니 대부분 사람들은 100~18000Hz정도로가 생각해야 할 겁니다. 저 같은 경우에는 14000Hz 이상이 들리지 않을 정도로 귀가 망가져서 싸구려 스피커를 써도 아무런 문제가 없지만 귀가 좋은 사람들은 18000Hz를 듣는다고 하더군요. 이런 노이즈 캔슬링을 하려면 이러한 웅웅대는 소리도 막아야 하는데 180도 위상의 소리를 만들기 위해서는 진동판의 성능을 고려해서 만들어야 합니다.


무슨 소리인고 하니 아무리 가볍고 빠른 반응속도의 진동판을 쓰더라도 반응 속도에 따른 딜레이가 발생되고 이를 고려해서 반대 위상을 그냥 만들면 안 되는 것이지요. 특히 진동판의 고유 진동수에 멀수록 반응 속도가 늦어진다고도 합니다. (고급 스피커의 경우 저음용과 고음용으로 나누는 이유)


골치 아프죠?


사실 그래서 요즘은 1번과 2번을 같이 사용하는 방식을 사용합니다. 물리적으로 진동판의 반응속도가 느린 주파수는 차폐를 하는 방식을 쓰고 동시에 진동판의 고유 진동수에 가까운 주파수는 반대 파장을 만들어서 진동판에 같이 뿌리는 겁니다. 


물리적 차폐가 어느 정도 막아주면 사람 말소리와 비슷한 주파수(2000~12000Hz)는 반대 위상으로 막아내는 것이지요. 하지만 이것도 완벽하지는 않겠지요. 그래서 완벽에 가까운 성능이 좋은 물건일 수록 미친듯이 가격이 올라가는 것이겠지요.


이래서 오디오가격에 비싼돈을 바르는 사람들은 그냥 바르는 것이 아닌 것 같습니다.


P.S 그런데 오디오에 관심이 많은 사람치고 주파수와 푸리에 변환같은 수학적인 것에는 문외한인 사람이 많은 것 같습니다. 아직도 DAC를 거치기 전 디지털 신호의 손실이나 FLAC 음원의 손실 같은 소리를 하는 것을 보면 웃음밖에 안 나옵니다.


최근 잡음 제거로 고생을 했는데 잡음을 제거하는 제일 좋은 방법은 그냥 다른 소리로 안 들리게 묻어버리는 것이었습니다. 지극히 아날로그적인 발상이지만 최소한 듣기 싫은 소리를 빼는 것에는 성공을 했지요. 이러한 꼼수들이 사실은 각종 오디오 기기에서 말하는 노하우들이 아닐까 싶습니다.

,

2018년 4월 현재 한국에서 가장 빠른 오픈소스 미러 서버는 다음카카오 입니다.


이전에는 그냥 Daum이었지요.


그래서 이전에는 저장소를 쓸 때

http://ftp.daum.net


이렇게 썼는데 다음과 카카오가 합병한 이후에는 주소가 바뀌어서


http://ftp.daumkakao.com


이렇게 바뀌었고 저도 이렇게 쓰고 있었습니다.


그런데 최근 주소가 또 바뀌었네요? 물론 리다이렉트 되기 때문에 별 문제는 없지만 어딘가 한군데를 더 거치는 것이 걸리적거리니...


http://mirror.kakao.com/


여기로 바뀌었습니다. 이젠 다음이란 이름을 싹 날려버리고 오로지 카카오로 통일하려고 하는군요. 카카오가 거대기업이 되더니 느낌이 어째 쎄합니다? 통근버스가 동네 학원버스였던 것이 엊그제 같은데 세상 참 빨리 변하네요. 이젠 괴물로 보이기 시작하다니...


인터페이스도 훨씬 더 예뻐졌습니다. 보통은 이 화면을 보기전에 그냥 컴컴한 CMD화면에서 주소를 바꾸기 때문에 잘 모르시긴 하겠지만...

,


LibreOffice가 어느새 6.0으로 업데이트 되었습니다.


기존 5.0보다 더욱 좋아진 기능으로 무장했고 더욱 호환성을 높혔습니다.


그런데 그에대한 반동으로 상당히 무거워졌습니다. 왠지 MSOffice가 갔던 그 길을 따라가는 것 같아 슬프네요.


하지만 뭐 이걸 어느정도 완화 할 수 는 있습니다. 물론 기본적으로 무거워 진 것은 어쩔 수 없으니 답답하면 버전을 낮추기라도 해야겠지요. (....아니면 이참에 다른 것으로 바꿔야 할지도 모르겠네요.)


일단 LibreOffice의 아무 프로그램이나 실행한 다음

도구-옵션으로 들어갑니다.


그다음 Advanced를 찾아 들어갑니다. 아직 번역이 완벽히 되지 않아서 한글과 영문이 섞여 있습니다.


여기서 Open Expoert Configuration 즉, 전문가 설정을 눌러 들어가도록 합시다.

참고로 여기서 JAVA를 꺼주시면 조금이나마 더 성능이 나아지기도 합니다. 대신 일부 기능을 못 씁니다.



여기서 org.openoffice.Office.Common에서 Cache -> GraphicManager 순으로 열어서 확인합니다.


여기서 캐시크기를 늘려주면 그림이 많은 문서를 작업할 때 캐시를 확보해서 어느정도 버벅임을 줄일 수 있습니다. TotalCacheSize와 ObjectCacheSize를 늘려주세요. 물론 적당히 늘려야 메모리를 절약할 수 있겠죠?


그리고 확인을 누른다음 옵션에서 보기를 누릅니다.



그래픽출력을 확인해보시면 하드웨어가속 사용이 있는데 시스템에 따라 하드웨어가속을 써야 빠른 경우가 있고 하드웨어 가속을 꺼야 빠른 경우가 있습니다. 그건 상황에따라 다릅니다. 그리고 OpenGL렌더링 사용은 왠만하면 체크해두세요. Ignore OpenGL Blacklist는 체크를 해서 쓰다가 렌더링이 깨지면 그냥 OpenGL 사용 자체를 꺼주세요. 일부 GPU에서 렌더링이 깨진다고 합니다.


일단 이렇게만 해도 적당히 돌아는 갑니다. 그런데 아직도 답답하다면 LibreOffice를 다운그레이드 하는 것도 방법입니다.


뭐... 차차 나아지겠지요.

,

csv파일은 굉장히 오래된 포맷입니다. Lotus 1-2-3시절부터 써오던 현재 Excel이 가지고 있는 위상을 그대로 가지고 있지요.


사실 csv포맷 자체는 단순하기 때문에 8bit마이컴에서도 쓸 수 있을 정도로 간단합니다. 하지만 그에비해 이를 이용하는 스프레드시트는 발전에 발전을 거듭하여 이에 범접할 수 없는 위치까지 왔습니다.


사실 최근에 쓰이는 스프레드시트는 csv포맷을 지금도 잘 읽어들입니다.

단, 나름 똑똑한 기능이라고 CSV파일에 숫자가 있으면 이를 Excel이나 LibreOffice Calc에서 읽어서 숫자 셀로 만들어버립니다. 편리한 기능이지요.


다만, 이건 숫자 데이터상의 CSV일때 이야기고 다른 상황이면 애매해집니다.


대표적인 경우가 다음과 같은 경우입니다.


대충 이런 형태의 CSV파일입니다.


제일 왼쪽은 16진수로 표시되고 그 다음열은 영문 문장 그 다음열은 번역된 문장으로 구성됩니다. 열과 열은 탭으로 구분되어있는 일명 TSV형태 입니다.


사실 LibreOffice의 Calc나 Excel, Google SpreadSheet 등 최근 스프레드시트는 모두 잘 읽어들입니다. 문제는.. 그놈의 숫자셀 기능이 문제를 일으킨다는 것이지요.


38e0이란 16진수가 38이 되어버렸다.

사실 그냥 숫자가 아닌 16진수이기 때문에 오인할 가능성은 있습니다. 문제는 16진수는 abcdef를 사용하는데 이를 알파벳으로 읽어버리고 이는 문자열셀로 만듭니다. 숫자만 있으면 숫자로 남기지요. 하지만 알파벳e와 숫자가 섞인 것은 자그마치 지수로 생각합니다!


그러니까 본래 38e0 이라는 16진수를 3.8 X 10 이라는 숫자로 읽어버리는 것입니다. 참고로 이를 원래의 텍스트로 되돌리지도 못합니다. 이놈의 프로그램은 CSV를 다시 읽어들인다든지 하는 것은 없더군요!


이는 Excel에도 같은 문제가 있기에 해당 문제에 대해 물어본 사람이 있습니다.

https://answers.microsoft.com/ko-kr/msoffice/forum/msoffice_excel-mso_winother-mso_2010/csv-%ED%8C%8C%EC%9D%BC-excel-open-%EC%8B%9C/7f8bcd9f-2177-4e80-b31c-0a79d61f117a


그런데 동문서답하네요. 그 이야기가 아닌 것 같은데...


그런데 불행인지 다행인지 딱 하나 Google 스프레드시트에서 이를 회피할 수 있는 방법이 있었습니다. 어차피 Google 스프레드시트에서 xls나 ods로 내보내기가 가능하니까 다른 프로그램 사용자도 이를 적용해서 변환한 다음 사용하면 아무 문제없이 쓸 수 있을 것입니다.


일단 https://docs.google.com/spreadsheets/u/0/ 일단 여기로 접속합니다. 구글 로그인은 되어있다는 가정하에요.


개인 적으로는 크롬을 사용하는 것을 추천합니다. 이러니 저러니해도 크롬이 가장 구글의 서비스를 쓰기 편하거든요.





그리고 오른쪽 아래의 빨간색 +버튼을 누릅니다. 그러면 빈 스프레드시트가 생성됩니다.


뒤에있는 데이터는 신경쓰지말자. 아까 보여줬던 그 데이터다.

파일 - 가져오기

이렇게 들어갑니다.


그리고 업로드 탭으로 들어간 뒤에 드래그 하라는 곳으로 CSV 파일을 던져 넣어서 업로드 합니다. 아니면 파란버튼을 눌러서 CSV파일을 열어도 됩니다.


그러면



파일 가져오기에 대한 옵션이 뜨는데 다른 것은 전부 기본상태로 둬도 되지만(구분 유형은 해주는 것이 그래도 좋습니다. 정 모르겠다고 하실 때만 자동 감지를 해주세요.)

"텍스트를 숫자 및 날짜로 전환" 부분을 아니오로 체크합니다. 그러면...


아까 지수로 읽히던 부분이 16진수의 텍스트로 잘 읽힙니다!


그럼 이걸 그냥 Google스프레드시트에서 바로 작업해도 되고 익숙한 다른 프로그램을 사용하고 싶으시면


파일 - 다른 이름으로 다운로드에서 xls 혹은 ods 다운로드가 가능합니다. 그러니까 이후에는 아무 문제없이 텍스트 셀로 된 파일을 열 수 있는 것입니다.


일단 구글의 프로그램으로 우회하긴 했지만 대량의 데이터가 들어간 CSV를 ods나 xls로 만들어 셀 속성을 살릴 수 있는 방법이었습니다. 이후 셀 속성을 바꾸고 싶다면 해당 프로그램에서 셀 속성을 바꾸면 그만입니다.

,

RenPy게임은 사실 허점이 많습니다. 이런 저런 잠금장치를 해봐도 결국 Python이라는 특성상 Py파일을 열 수 있고 엔진의 Py파일을 손대면 이러니저러니 해도 데이터 마이닝을 쉽게 할 수 있습니다.


사실 대다수 게임엔진은 개발자모드 혹은 콘솔진입을 허용합니다. 대표적인 게임이 퀘이크 엔진과 그의 영향을 받은 소스엔진 같은 게임 엔진입니다.


멀리 갈 것도 없이 소스엔진 게임인 half-life를 실행한 상태에서 `키(혹은~키)를 누르면 갑자기 게임 내에서 명령어 창이 뜹니다. 이게 바로 게임 엔진의 콘솔인 것이지요. 일반인들은 이 콘솔을 치트키를 치는 창 정도로 생각하지만 (sv_cheats 1 이런 것)사실은 이 명령창은 개발자의 개발 편의성을 위해 만들어진 것 입니다.


RenPy도 게임엔진이기에 개발자의 편의를 위한 기능을 내장하고 있습니다. 보통 options.rpy파일로 이를 제어하고 있습니다.


우선 매뉴얼을 볼까요?


https://www.renpy.org/doc/html/developer_tools.html

Shift+O키를 누르면 콘솔이 활성화 되고 Shift+R을 누르면 스크립트를 다시 읽어들인다고 합니다. 실시간 스크립트 수정이 필요할 때 아주 좋지요.


하지만 이것을 실제 게이머가 실수로 누르기라도 하면 난감해지겠지요? 어떻게 하는지도 잘 모를 것이고요. 이를 제어하는 일반적인 방법은 다음과 같습니다.


Renpy로 만들던 중에 Options.rpy 파일을 열면

init -1 python hide:
    config.developer = False
    config.console = False

이러한 구문이 있거나 이것과 흡사한 구문이 있습니다.


바로 개발자모드를 활성화 하는 코드입니다. 물론 실제 상용 게임에는 True를 False로 바꿔서 개발자모드 진입을 막습니다. 그리고 파일을 쉽게 읽기 어렵게 하기 위해 rpyc형태로 배포합니다. 한번 컴파일한 형태이지요. 물론 rpyc는 쉽게 디컴파일이 되지만 Python 직접 접근 구문에서 간혹 파일이 깨지기도 합니다. 그러므로 rpyc파일을 디컴파일해서 rpy로 만든 다음 수정해도 되지만 이는 별로 추천하지 않습니다.


무엇보다 Renpy는 Python이기에 위험한 작업 없이도 쉽게 됩니다.


Python은 인터프리터 언어이고 이미 있는 객체의 이름을 다른 객체로 선언하면 이전의 객체는 무시됩니다. 그리고 Renpy는 스크립트를 읽어들일때 이름 순으로 읽습니다. 즉, A로 시작되는 파일을 읽기 시작해서 z로 시작하는 파일로 끝내는 것입니다.


그렇다는 것은 Options.rpy를 읽어들여서 개발자모드가 비활성화 되었다고 한들 z로 시작되는 파일을 읽어서 활성화 되면 개발자모드가 다시 활성화 되는 것입니다.


두근두근 문예부의 경우 이를 비활성화 해 놓았습니다. 막말로 이런 플레이어를 가지고 노는 게임이 개발자모드로 진입하면 이게 게임의 일부분인지 아니면 실수인지 알 길이 없지요.(오류메시지나 블루스크린마저 게임의 일부분으로 써먹는 게임이니까요. 진짜 오류메시지와 구분이 안 갑니다.)


하지만 zzzzz.rpy라는 파일을 game폴더에 만들어 놓고 다음과 같이 적어봅시다.

init -1 python hide:
    config.developer = True
    config.console = True


이렇게 하고 게임을 실행하면...


평상시와 다를 것이 없습니다. 하지만 Shift+O키를 누르면 상황이 달라집니다.

>

어디서 많이 보지 않았나요?

닮았죠?

네 바로 Python 커맨드 창입니다. 직접 여기서 명령을 내려서 제어를 할 수 있습니다.

물론 Python구문뿐 아니라 RenPy모듈도 이미 import 되어 있기에 RenPy명령어도 먹힙니다.


그러므로 개발자 콘솔에서 탈출을 하려면 Python과 똑같이

exit

이 명령을 하면 됩니다.


그럼 한번 치트를 시도해봅시다.


jump credits


이러면 바로 credits라고 정의된 부분으로 바로 점프합니다. (타이틀에서는 먹히지 않습니다. 일단 새 게임을 눌러서 게임이 시작되야 먹힙니다. credits 레이블이 나중에 만들어지기 때문입니다.)


그럼 바로 엔딩 보는 겁니다. 물론 CG는 회수 된 부분 까지만 나오게 됩니다. Monika가 놀라서 뒤집어질 일이 일어난 것이지요. (이래서 데이터 마이닝을 하는 사람은 미스테리 게임을 못합니다. - 언더테일 제작자 왈)


이런 jump기능은 특정 label로 바로 넘어가기 위한 구문으로 실제로 스크립트에 써먹는 구문입니다. 이걸 명령을 때우는 겁니다. Python개발 할 때랑 비슷하지요.


그리고 넘기기가 안 먹히는 구간에서 콘솔을 열고 config.fast_skipping=True를 다시 때려버리면 마구 넘어갑니다. 이 외에도 많은 부분을 뜯어 볼 수 있습니다.


물론 이걸 남용하면 Monika가 그랬던 것처럼 게임이 망가집니다. 주의하세요!

,