VirtualBox로 맥 OS X 엘 케피탄 설치하는 방법, How to Install Mac OS X El Capitan on PC on VirtualBox

이 포스팅은 창작글이 아님을 밝힙니다.

이번 포스팅은 http://techsviewer.com/how-to-install-mac-os-x-el-capitan-on-pc-on-virtualbox/ 글을 번역 및 추가 설명하여 작성한 글입니다. 따라서 이 글은 CCL 해제하며, 원작자의 요구에 따라 글은 내려질 수 도 있습니다.

또한, 굳이 이 포스팅을 읽지 않아도, 저 글에 쉽고 자세하게 잘 설명되어 있으며 찾아보면 설치 동영상까지 제공하니 그걸 따라서 보시는것도 추천드립니다.

글에서 셜명되는 파일 및 자료들은 모두 위 링크에서 다운로드 받을 수 있습니다. 제가 직접 다시 배포할 순 없음을 알아주세요.

원 글에서와 제가 맞춰본 방법이 약간 상의합니다. 제가 맞춘 방법은 이텔릭 체로 표시하니 참고하세요. 제 방법은 어디까지나 참고만 하시길 바랍니다.


준비 해야할 사항

PC 최소사양

  • 운영체제 : Windows 7, 8, 8.1, 10 64bit
  • 프로세서 : Intel
  • 메모리 : 3GB 이상
  • 기타 : 가상화 기술(VT-x)

소프트웨어

  • 가상머신 : VirtualBox 4.3.18 또는 5.0이상
  • 이미지파일 : Mac OS X 10.11 El Capitan Retail VirtualBox Image
  • 기타 : 이미지 파일을 풀 수 있는 압축 해제 유틸리티(WinRAR나 7zip 권장)


방법

1. 가상 머신을 만든다.

준비해야 할 사항을 확인하고, 준비할 소프트웨어를 확인하고, 다운로드 받거나 설치해둡니다.




준비가 다 되었다면 가상머신을 생성합니다. 생성할 가상머신의 OS 종류와 버전을 맞추고 메모리 크기는 권장하는 만큼으로 지정합니다. 가상머신의 이름은 후에 가상머신을 CMD로 편집해야 하므로, 주의해서 생성해 주세요.

메모리는 2GB가 기본 권장이긴 하나, 원글에서는 4GB로 셋팅한 모습을 확인할 수 있습니다. 저는 메모리가 부족하여 2GB로만 셋팅하여 진행하였습니다


2. 가상 머신의 상세 설정을 지정한다.

생성된 가상머신을 바로 실행하면 안됩니다. 기본 셋팅이 필요한데,



부팅 디바이스에서 플로피 디스크를 제거하고, 칩셋은 PIIX3로 선택합니다. 앞에 가상 머신을 만들 때 OS 종류를 Mac OS로 잘 맞췄다면 확장된 기능의 I/O APIC 활성화, EFI 활성화, UTP Time 보고 기능이 활성화 되어 있을 겁니다.

역시 설명에는 PIIX3로 선택되어 있고 중요한 부분은 아닐 지 모르겠지만, 인텔 칩셋을 예물레이팅 하는것이 Mac OS에서 호환성 문제를 덜 일으킨다는 의견이 많습니다. 그래서 저는 인텔 칩셋인 ICH9를 예물레이팅 하도록 선택했습니다.



프로세서는 2개 이상으로 선택하고, PAE/NX 활성화는 꼭 하여야 합니다. 역시 마찬가지로 가속에서도 하드웨어 가상화 기능이 꼭 선택되어 있는지 확인해주세요.

운영체제가 Windows 10 이라면 반가상화 인터페이스를 KVM이나 Hyper-V로 선택했을때 가상화 성능이 좀 더 좋으니 저는 반가상화 인터페이스를 KVM으로 선택하였습니다


3. 가상 머신의 하드웨어 이름과 버전등을 수정합니다.

Mac OS는 오직 Mac PC에서만 설치되고 사용하도록 하고 있습니다. 당연히 가상머신이나 일반 IBM x86호환 PC에서는 설치가 안되도록 막혀져 있는데, 이걸 확인하는게 드라이버 이름쪽입니다.



고로 가상머신의 드라이버 이름을 바꿔서 Mac PC라고 인정될 수 있도록 하는 부분입니다. 별건 없고, 위 코드에서 " " 안에 아까 중요하다고 했던 가상머신 이름으로 바꿔 넣습니다. 중요한건 “ “ 안에 적어야 합니다.

저는 가상머신 이름을 Mac OS X 10.11 이라고 지정했으니 위와 같이 입력했습니다. 원 글에 해당 코드가 복사 가능하도록 되어 있긴 하나, CMD에서 일일이 복사 붙혀넣기 하기 귀찮을 수 도 있으니, 제가 bat 파일을 따로 업로드 해 둡니다. 다만 이걸 그대로 실행시켜선 안되며, 꼭 메모장이나 Notepad++등의 유틸리티로 열어 위 설명대로 " " 안에 가상머신의 이름을 넣어준 후 관리자 권한으로 실행하세요.

VirtualBoxSetting.bat


4. 부팅 완료 및 기본 셋팅을 합니다.

이후부터는 제 개인적인 생각으로 셋팅한 것이니 굳이 따라하실 필요는 없습니다. 참고만 하시라는 의미에서 추가로 붙혀두며, 원 글 에서는 이 후 부분은 존재하지 않습니다. 설치 화면을 잘 읽어보시고 어떻게 셋팅할 것인지 본인이 직접 적용해보시는걸 추천드립니다.



부팅 과정 중 별다른 에러 메시지를 띄우거나, 오래동안 화면이 변하지 않는 상황이 아니라면 정상적으로 부팅중인겁니다. 가상머신이니 당연히 느릴 뿐



한참 지나가다보면 Welcome 라는 화면과 함께 국가를 선택하도록 하는데, 이후부터는 각자 알아서 맞춰 셋팅하시면 됩니다. 다만 애플 ID를 입력하거나, 사용기록이나 오류등을 보고하는 항목은 왠만하면 Skip 하거나 비활성화 하는 센스가 있다면 좋겠네요.



셋팅이 다 되면 Setting Up Your Mac… 이라는 화면에서 기다리면 됩니다. 역시 가상머신이니 느린거 바탕화면이 뜨고 Launchpad가 뜨면 사용할 준비는 다 되었습니다.

다만 이게 완전히 끝이 아니라 두가지 정도 추가로 더 해야 하는데, 1. 바탕화면이 뜸과 동시에 뜨는 키보드 셋팅, ISO 102Key표시된 키보드를 선택하거나 기본 가이드대로 하면 됩니다. 2. 시스템이 켜지고 나서 한동안은 계속 가상 하드디스크를 읽고 가상머신이 CPU를 잡아먹고 있을 건데 30분간 놔두라네요. 저는 그냥 귀찮아서 바로 사용할거 사용했지만요


5. 사용하세요.

끝입니다. 이제 사용하시면 되요.


가상머신이니 느리고, 버벅이며, 그래픽 가속은 되지 않습니다.(그래픽 램 설정 높게 줘 봤자 인식하는건 3MB 뿐이고 그래픽 가속 적용해줘봤자 가속 안먹힙니다. 그러니 그래픽 설정은 의미 없습니다.) 다만, CPU 파워만을 필요로 한다면 Host PC의 성능에 따라 넉넉하게 CPU와 RAM을 활당해서 어느정도 사용할만한 환경을 만들 순 있을 거예요.

저는 최근에 iOS 관련한 교육을 받고 있는데, 그래서 한번 Xcode로 iOS에 Hello World를 띄워 봤습니다. 호스트 PC 사양은 intel i7-6500U CPU, 8GB RAM, GeForce 940M(DDR3 2GB) GPU, 120GB SSD, 1TB HDD의 노트북이고 가상 머신에 2GB RAM 활당하고, 가상 하드디스크 파일은 1TB HDD에 설치해 두었구요.

하드디스크 병목 현상이 심해 느린 것, 그래픽 가속이 안되고 비정상적 출력으로 인해 화면이 가끔 깨지는 점, HOST - GUEST OS간 통합 지원이 되지 않아 미묘하게 반응 속도 느린거 제외하면(사실상 전부긴 하지만), 의외로 할 만은 합니다. 하드디스크 병목 현상의 경우 2GB의 작은 RAM 공간을 활당한 상태라 어쩔 수 없이 적극적으로 가상 메모리와 메모리 압축을 많이 쓸태고, 결과적으로 IO가 많이 일어날텐데, 여기다가 5400RPM의 느린 하드디스크에 가상 하드디스크 이미지 파일이 저장되어 있으니 느린건 어쩔 수 없는 상황이라 생각되네요, 메모리를 넉넉하게 주던지, 가상 하드디스크 파일을  SSD등의 빠른 매체에 저장해 두면 상당히 쾌적해 질 거라 생각해요. 일단, iOS 개발이 가능한것 까지 확인하였으니 저는 잘 활용해 보렵니다.




끝.



Minny_

,

Windows 10, 8.1, 8 Home Edition에서 RDP(원격 데스크톱) 서버 기능 활성화하기

개요

Windows Home에서는 원격 데스크톱 연결은 가능한데, 원격 데스크톱 서버 기능은 사용할 수 없어요.

해당 기능은 Windows Pro에서만 사용할 수 있도록 막혀 있는데, 이 글은 Windows Home에서도 원격 데스크톱 서버 기능을 사용할 수 있도록 하는 방법이예요.

이 방법은 Windows 10 Home, Windows 8.1 Home, Windows 8 Home, Windows 7 Stater 버전에서 사용할 수 있어요. 단 Windows 10의 경우는 대규모 업데이트가 진행되면 다시 적용해야 하거나, 적용이 되지 않을 수 도 있으니 참고 바랍니다.


필요하게 되었어요

RDP(원격 데스크톱 프로토콜)에 대해서 아시는 분은 아실겁니다. Windows 자체적으로 제공해 주는 일종의 원격 제어 기능이며 네트워크 연결 상태가 좋으면 왠만하게 성능 잘 나오는게 강점이지요.

물론, 기능도 풍부하고 성능도 좋고, 네트워크 위치에 구애받지 않고도 쓸 수 있는 여러가지 대체제가 있고, 일반적인 용도라면 대체제로 RDP 대신 잘 쓸 수 있습니다. 이 바닥에서 유명한 대체제라면 팀뷰어라는 유틸리티가 있는데, 이녀석은 화면 자체를 그냥 캡쳐떠서 전송하는거라 네트워크와 시스템 성능만 충분하다면 다이렉트X를 사용하는 게임도 플래이 가능하죠. 별다른 네트워크 설정 없이도 쉽게 원격 제어가 가능하다는것도 장점이고… 그래서 잘 쓰고 있지요.


단, 몇가지 문제가 있는데

  1. 팀뷰어는 일단 전반적으로 느려요. 아무리 좋은 인터넷에 연결되어 있어도, 같은 네트워크 안에 있어도 미묘하게 반응이 느립니다.
  2. 또 아무래도 직접 화면을 캡쳐하는 거라 꽤 성능을 많이 잡아먹고 있죠.
  3. 젤 중요한건 라이센스가 필요합니다. 개인용이라면 상관 없지만,,,

뭐 다른 원격 제어 유틸리티들도 상황은 마찬가지겠지요. (물론 원격 제어 유틸리티마다 다를 수 도 있고, 제가 쓰는 팀뷰어는 학교내에서 구매한 라이센스를 쓰고는 있어서 저한테는 1과 2번이 중요한 문제였어요.)

그래서 RDP가 필요하긴 한데,,, 제 노트북은 Windows 10 Home이 설치되어 있어요. 그래서 RDP(원격 데스크톱 프로토콜) 서버 기능이 없는 상황, Windows RDP Server 기능은 Windows Home 버전에서는 제공하지 않으니 원래라면 사용이 불가능했어요.

이거 때문에 Windows 10 Pro 버전 라이센스를 구매할까도 생각했는데, RDP 이거 하나 때문에 업그레이드 라이센스를 지금 사기도 에매하고, 나중에 언젠가는 살거지만, 지금은 다른 방법을 찾아보기로 했어요. 그리고 저는 그 방법으로 RDP Server 기능을 잘 사용하고 있습니다.


어떤 방법인데?

일단 Windows Home 버전은 RDP를 쓸 수 없는거 아니냐? 하면 그건 아닙니다. RDP는 Windows Home 이라도 포함되어 있어요. 원격 데스크톱 연결 자체는 있거든요. Home버전에서 안되는 기능은 RDP Server 기능이고, 이 기능 또한 정확히 말하면 막혀 있는거지 아얘 삭제된 거는 아니예요.

제가 쓰는 방법은 Windows Home에 있는 RDP에 Server를 활성화 하는 방법이예요. 구글링해보면 꽤 많이 돌아다니는데 RDPWrap 라는 녀석이 있습니다. 깃허브에도 올라오고는 하는데, 컴파일 되어서 설치 가능한 건 꽤 구하기 힘들고, 방법 설명도 설명하는 곳마다 꽤 난해하게 적혀 있어서 그냥 제가 한 방법대로 다시 설명드릴게요.


어떻게 하는데?

지금부터는 읽으면서 따라하시면 됩니다. 근데, 혹시나 어떤 문제가 발생했다면 저는 책임지지 않으니까, 미리 백업을 해 두거나, 본인이 이후 일어나는 문제에 대해 해결할 수 있다면 계속 진행하세요.

우선 RDP Server 기능을 활성화 하는 라이브러리를 받아야 되요. 그리고 그걸 시스템 내부에 설치하고 셋팅하는것까지 해야 하는데, 굳이 그렇게까지 힘들게 할 필요는 없고 마우스 클릭 몇번으로 할 수 있도록 쉽게 패키징 되어 있습니다. 그게 RDPWrap라는 프로그램이예요.

RDPWrap-v1.6.zip

이걸 다운로드 받고 압축을 풀면 안에 뭐 이것저것 많은데, 간단합니다. install.bat을 실행해서 설치를 해 줍니다.

왠만하면 이것만 해도 RDP Server가 활성화 되는데, 간혹 시스템마다 활성화가 안되는 경우가 있으니까 RDPConf.exe를 실행해서 뜨는 창에 Listener state가 Listening[fully supported] 라고 되어 있는지 확인해보세요. 이게 뜬다면 RDP Server가 활성화 된거고, 아니라면 라이브러리와 서비스는 설치가 되었는데 작동하지 않는 상황입니다.

만약 Listening[fully supported]가 뜨지 않는다면 , 안에 있는 update.bat를 실행해서 진행된 후 다시 한번 RDPConf.exe를 실행해서 Listener state를 확인해보세요. 물론 모든 bat 파일은 관리자 권한으로 실행해야 합니다.

설치가 완료된 것 같다면, RDPCheck.exe를 실행해서 로컬로 직접 확인해보거나 다른 PC에서 해당 PC에 RDP로 연결해 봅니다. 저는 넷북에서 직접 연결 시도 해봤는데, 정상적으로 잘 연결된 걸 확인할 수 있었어요.



정식 기능이랑 차이점은?

아무래도 Windows Home에서는 지원하지 않는거라, 윈도우 자체 설정에서는 원격 데스크톱 연결 기능을 설정할 수 없습니다.

그래서 RDPConf.exe라는 프로그램을 제공해주는거예요. Windows Pro에서 설정 가능한 RDP Server 설정을 이 프로그램을 통해 대신하는거죠. 멀티 유저 연결이나 보안 권한 설정도 할 수 있으니까, 이 프로그램은 어디 간직해 뒀다가 필요하면 셋팅하면서 사용하면 됩니다.


그 외 Windows Pro에 포함되어 있는 RDP Server 기능이랑 기능차이는 전혀 없으니까, 이대로 써도 될 것 같아요. 윈도우 10에서 대규모 업데이트가 있다고 하면 혹시 모르니 uninstall.bat을 사용해서 RDPWrap을 제거한 후 윈도우 10 대규모 업데이트 적용 하고 다시 설치하는걸 추천해요.

끝!


Minny_

,

삼성 노트북5 NT500R5L에서 프린트스크린 키, Prt Sc 키. Fn 키 조합 없이 바로 사용하기

개요

제한된 크기의 노트북에서 어쩔 수 없는, 키보드 배열에 불만이 있다면 이를 변경할 수 있도록 하는 팁입니다. 그중에서 삼성 노트북5 NT500R5L의 키보드 레이아웃 중 불만이었던 Fn 키 조합 프린트 스크린 키를 평소에 쓰지 않는 Fn Lcok키에 매핑하는 방법을 안내합니다.


시작하며…

삼성 노트북5 NT500R5L 노트북을 사용하면서 키보드에 대한 불만 첫번째는 키감이 너무 가볍다는 것, 두번째는 도무지 이해할 수 없는 프린트 스크린키 배치였습니다. 첫번째 문제는 뭐 여타 대부분의 노트북 키보드가 그래왔으니 이것도 그려러니 하고 참는다 생각하지만, 두번째 문제인 프린트 스크린키가 펑션키 조합으로 사용해야 하는것은 아무리 이해하려 해도 이해가 안되었습니다.


키보드 자리가 없나? 
그러기에는 도무지 쓸 모가 보이지 않는 Fn Lock 키가 떡하니 있죠. 우선 이 키가 노트북에서 왜 필요한지 모르겠고, Fn Lock를 굳이 키로 두지 않고 구현할 방법은 많습니다. 하지만 굳이 삼성 노트북5 NT500R5L에서는 따로 키를 배정했죠. 

프린트 스크린키, Prt Sc 키가  기능키로 분류될 만큼 주로 사용하는 키가 아닌가? 
싶기에는 일단 저는 너무나 자주 사용하는데다가 화면을 캡쳐 할 수 있는 윈도우의 기능 키기 때문에 굳이 뺄 이유도 없었죠.(DOS 에서 주로 쓰던 Pause 키와 Scroll Lock 키 정도를 없애는건 충분히 이해하지만요. 물론 프린트 스크린키와 같이 물려 있는 시스템 리퀘스트 키, SysRq 키도 DOS를 위한 기능 키 이지만요.) 

그렇다고 Fn 키 조합으로 사용하는 키들이 대부분 시스템 기능 키 인가? 
라는 생각을 하면서 보면, 다 노트북 기능 키 들 뿐이고, 도무지 프린트 스크린 키를 Fn 키 조합으로 만들어둔 이유를 알 수 없었습니다. 애초에 여타 미니 키보드처럼 Home, End, Pg UP, Pg DN 키들이 모두 Fn 키 조합으로 사용할 수 있었다면 억지로라도 이해는 하겠지만, 솔직히 Insert, Home, End키들 보다 더 사용도가 높은 프린트 스크린 키, Prt Sc 키를 Fn 키 조합으로 한 건 정말 이해가 안되었어요.

진짜 삼성 노트북5 NT500R5L 키보드 레이아웃 설계한 사람은 반성 좀 해야 합니다. 다른 회사 키보드만 봐도 제한되는 공간에 어떻게 불편하지 않도록 키를 선별하고 위치를 지정하면서 만들었다는게 딱 보이는데, 삼성 노트북5 NT500R5L의 키보드 레이아웃은 그냥 대충 박아 넣은거 같아요.


삼성 욕은 그만하고 해결책은?

그래서 결국 저는 이걸 소프트웨어적으로라도 해결할 수 있는 방법이 있나 싶었어요. 하드웨어적인 부분을 바꿀 순 없지만 소프트웨어적으로 바꿀 수는 있다 생각한거죠.

여러가지 프로그램이 있었습니다. 제가 일단 찾은 프로그램은 SharpKeys라는 프로그램이고, 그 외에 비슷한 프로그램이 많이 있군요. 여튼 SharpKeys 라는 프로그램은 사용자가 원하는 셋팅을 만든 후 레지스트리에 값을 써 주는 프로그램이예요. 프로그램 자체가 직관적으로 되어 있고, 다른 블로거분들이 이 프로그램에 대해 많은 설명을 해 주었으니까 저는 별다른 설명은 안할게요.



저는 이 프로그램을 통해서 위와 같이 셋팅하였어요. 그러니까 존재의 의의가 가장 없는 Fn Lock 키를 프린트 스크린 키, Prt Sc 키로 바꾸었어요. SharpKeys에서 확인되는 Fn Lock 키는 두가지가 있어요. 잠금 해제(Fn 조합이 아니더라도 Fn 조합 키가 작동하도록)랑 잠금 설정(전자와 반대) 이렇게, Fn Lock 키를 누를때마다 위의 키들이 번갈아가며 입력됩니다. 그러니 셋팅을 두 경우 모두 해야 하겠죠?

여튼 이렇게 셋팅을 하게 되면 Fn Lock 키는 이제 완벽하게 프린트 스크린 키, Prt Sc 키로 작동하게 됩니다. 호환성 문제 없고, 설정이 풀릴 일 도 없습니다. 그러니까 완벽해요. 레지스트리 변경으로 시스템의 키보드 레이아웃을 변경하였기 때문에 윈도우 위에서는 무조건 해당 키를 프린트 스크린 키, Prt Sc 키로만 인식하게 되거든요.


아 그런거 모르겠고 쉬운 방법 없나?

저도 사실 프로그램을 사용하고 하는 방법을 그리 좋아하지 않습니다. 시스템의 기능을 임의로 변경하기 때문이죠. 위의 프로그램은 레지스트리에 해당 키 입력시 해당 키가 정해진 키인걸로 인식하도록 시스템을 임의로 변경한거예요. 그러니까 키보드 레이아웃을 임의로 변경한거겠죠. 이런 변경은 나중에 키보드 보안 프로그램쪽에서 걸러낼 수 도 있어요. 그 외에 시스템에 접근을 하는 셋팅 프로그램이니까 혹시나 내가 모르는 셋팅을 할 지 또 어떻게 알아요?

일단 제가 해당 프로그램을 설치하고 시스템이 변경되는 지 확인을 해 봤는데 일단은 잘 모르겠어요. 많이 쓰여진 프로그램이기도 하고, 레지스트리가 변하는것도 크게 발견한건 없습니다. 어차피 저도 이거대로 계속 사용할 거고 하니, 레지스트리 셋팅 파일로 만들어봤습니다. 아래의 레지스트리 파일은 위의 프로그램을 이용하여 생성된 값을 찾아서 레지스트리를 내보내기 하였고, 2개의 파일로 나눠진걸 제가 하나로 합쳐놨습니다. 아래는 레지스트리 내용이고 그 아래의 파일은 해당 레지스트리 파일이에요.

다운받으시고 레지스트리 병합한 후 재부팅 or 재로그온 해 주시면 됩니다. 당연히 관리자 권한으로 해주셔야 하고, 롤백 하실려면 아래 레지스트리 파일 내용의 키 값을 삭제하시면 됩니다. 롤백이 그렇게 어려운 것도 아니니 따로 롤백 레지스트리 병합 파일은 안 만들었어요.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,37,e0,28,e0,37,e0,29,e0,\
  00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,37,e0,28,e0,37,e0,29,e0,\
  00,00,00,00

주의사항

  • 혹시나 아래의 레지스트리를 삼성 노트북5 NT500R5L 말고 다른 시스템에서 적용하였을때 생기는 문제는 제가 책임지지 않습니다. 다른 노트북에서 저처럼 비슷한 문제로 특정키를 다른 키로 변경하고 싶다면 해당 프로그램으로 확인하면서 설정하시는거 추천드립니다.
  • 해당 레지스트리는 삼성 노트북5 NT500R5L-Y77L에서 출시된 상태 그대로의 윈도우 환경에서 테스트하였습니다. 다른 OS를 설치하셨다거나 삼성 복구 이미지를 사용하여 초기화 하지 않고 직접 포맷 or Windows의 PC 초기화 기능을 이용하였던지,,, 여튼 제품 출고시 상태와 다른 상태일때는 아래의 레지스트리를 적용하면 예기치 못한 문제가 발생할 수 있습니다. 그때도 저는 책임 안져요...
  • 그러니까 그냥 직접 프로그램 받아서 적용하세요. 별로 안 어려워요... 아래는 자신이 정말 컴맹이다. 하시는 분들만. 

다른 활용은?

자 저는 Fn Lock키에 프린트 스크린 키, Prt Sc 키만 활당해서 사용중이예요. 원래 있던 Insert 키에 Fn 키 조합으로 입력 가능한 프린트 스크린 키, Prt Sc키는 이제 크게 의미가 없으니 다른 키로 활당해도 상관 없습니다. 다만 이 키가 프로그램의 키 캡쳐로는 인식이 안될껀데, 그냥 키 목록 중에 Prt Sc 키로 임의선택하고 셋팅하면 되니 참고하세요. 아무래도 Fn 키 조합으로 누르는 상황에는 Fn 키와 Prt Sc 키가 같이 먹히면서 프로그램 상에서 인식이 안되는 모양이예요. 여튼 이 키는 사실상 쓸모가 없으니 원하는 키를 활당하시면 됩니다. 어차피 Fn 키 조합 키이기 때문에 접근성이 떨어져서 평소에는 잘 사용하지 못할꺼니까 그거 감안해서 셋팅하세요.(저는 Scroll Lock 키로 활당하였습니다)

혹시나 Fn 키 조합 기능키 중 쓸모없다 판단되는 기능 키가 있다면 다른 키로 활당할 수 도 있습니다. 저 같은 경우는 미디어 키를 활당하고 싶긴 한데, 연속되게 필요없는 키가 없어서 그냥 안쓰고 있어요.

Fn Lock 키를 사용하고 싶다! 라고 설마 하시는 분들은, 다시 셋팅을 롤백 할 필요 없이 Fn Lock 키를 누른 채로 Fn키 조합 기능키를 누르면 Fn Lock가 걸린채로 있게 됩니다. 아무래도 Windows의 기능을 이용하는게 아니라 키보드 자체에서 Fn Lock를 작동하도록 하는 야매스러운방법인거 같은데(그러니까 Windows OS가 아니라도 Fn Lock 키가 작동하도록) 어쨌거나 이렇게 하면 됩니다.

결론

그러니까 삼성 노트북5 NT500R5L의 키보드 레이아웃 설계한 사람에게 진짜 한번 물어보고 싶어요. 도대체 왜…


Minny_

,

팟플레이어를 이용한 PC 화면 녹화, 게임 녹화

개요

다음에서 제공하는 팟플레이어를 이용하여 PC화면이나 게임화면을 녹화할 수 있는 방법을 설명합니다.


특징

팟플레이어는 LIVE버전과 재생전용버전이 있으며, LIVE버전은 팟플레이어를 이용해 인터넷 개인 방송을 할 수 있습니다. 이 팁에서 이야기 하는 PC 화면, 게임 화면 녹화방법은 팟플레이어의 개인 방송 기능을 이용하여 녹화하는 방법이며 다른 프로그램을 이용하는 방법과는 아래와 같은 차이가 있습니다.

- 하드웨어 가속이 가능한 환경에서는 하드웨어 가속을 통해 영상 캡쳐, 성능 저하가 적습니다.
- 왠만한 모든 환경을 지원하며, 별다른 셋팅을 할 필요 없습니다.
- 다양한 화질로 녹화 가능하고 녹화된 영상의 크기가 작습니다.
- 녹화 방법이 쉬우며, 확실하게 녹화가 됩니다.

원리 - 캡쳐

팟플레이어의 LIVE버전은 인터넷 개인방송을 위해 만들어졌습니다. 그렇기 때문에 화면을 캡쳐하는 기능을 가지고 있습니다.

이 화면 캡쳐 기능은 윈도우에서 기본으로 사용하는 GDI 방식과 DirectDraw 방식, Direct X 출력 후킹 방식, DXGI 방식의 캡쳐를 지원하기 때문에 Windows 7부터는 Direct X 출력 후킹 방식, Windows 8부터는 DXGI방식으로 할 경우 성능에 큰 영향 없이 영상을 녹화 할 수 있습니다. 또한 이렇게 영상을 캡쳐할 때 인코더를 선택하고 해상도나 비트레이트등도 쉽게 설정 가능해 캡쳐되는 화질을 결정할 수 있는데 상세하게 설정할 순 없지만, 별다른 유료 프로그램이나 어려운 설정을 사용하지 않고 쉽게 캡쳐를 할 수 있습니다.


원리 - 녹화

다만 팟플레이어의 캡쳐 기능으로는 녹화를 바로 할 수 없습니다. 방송을 시작할 경우에 한해서 캡쳐된 영상을 파일로 만들 수 있게 되어 있어서, 방송을 하지 않고 저처럼 그냥 녹화만 하고 싶으신 분들은 추가적으로 해야 합니다.

예전부터(KMP당시에도) 현재 보는 영상을 따로 녹화할 수 있는 기능이 있습니다. 이 녹화 기능은 캡쳐와 마찬가지로 상세한 설정은 없지만 디코더를 선택하고 알기 쉽게 되어 있습니다.


방법

팟플레이어 LIVE 버전을 실행시킨 후 방송하기 기능을 켭니다.(마우스 오른쪽 클릭-방송 관련 도구-방송하기, 바로가기 키 F10) 그리고 스크린캡쳐를 선택하면 스크린 캡쳐 관련 기능들을 사용할 수 있습니다.

보이는 대로 원하는 옵션을 선택하면 됩니다. 옵션에 간단하게 설명이 되어 있으니 굳이 제가 알려드릴 건 없고, 원하는 설정으로 맞춘 후, 미리보기를 누르면 카메로로 사용할 스크린 영역이 나오고 팟플레이어 화면에 스크린 영역에 캡쳐된 영상이 나오게 됩니다.

우선 이렇게 하면 방송 준비는 완료. 여기서 방송을 하고 싶으신 분들은 방송을 하시면 개인방송을 할 수 있습니다. 방송을 하게 되면 자동으로 녹화해주기도 하니까 이 뒤에 계속 이어지는 방법은 방송을 하시는 분들은 굳이 읽을 필요 없습니다.

녹화는 동영상 캡쳐 기능을 켜면 됩니다.(마우스 오른쪽 클릭-영상-동영상 캡쳐, 바로가기 키 Alt + C), 역시 캡쳐와 마찬가지로 원하는 옵션을 선택하여 설정해주고, 설정이 완료되고 녹화를 하고 싶다면 시작을 눌러 주면 됩니다.


추천설정

그냥 무턱대고 녹화를 하면 프래임이 끊기거나 게임 플래이에 문제가 발생할 수 있습니다. 녹화 화질도 너무나 좋지 못할 수 있죠. 대부분의 시스템에 적용되는 부분은 아니겠지만, 제 노트북 사양에 맞춰서 설명 드립니다.

우선 제 시스템은 Windows 10에 스카이레이크 i7-6500U, 지포스 940M이 탑재되었습니다. 게임성능에 중요한건 CPU와 게임을 돌릴 외장그래픽의 점유율이 얼마나 되냐일건데, 옵티머스 그래픽을 사용하는 노트북이나 꼭 옵티머스 그래픽이 아니더라도 멀티 GPU를 사용하는 시스템에서는 조금 더 좋은 효율을 보여줄 수 있습니다.

그래서 어떻게 설정하느냐…



게임을 하든 뭘 하든 간에 DXGI 1.2캡처를 이용하세요. 만약 Windows 7이라면 게임 캡쳐모드를 선택합니다. GDI 캡쳐를 이용 할 경우 캡쳐화면 중에 그래픽을 사용하거나, 오버레이등의 화면을 캡쳐할 수 없습니다.

일부 시스템에 따라서는 오디오 캡쳐 장치 2가지를 지원 안할 수 있습니다. 제 노트북 같은 경우는 따로 장치를 사용해서 두번째 장치 소리 입력을 선택할 경우에는 상관 없었는데, 노트북 내부의 리얼텍 오디오에서 두가지 소리를 같이 입력하려하니 하나는 입력 안되는 모습을 보였습니다. 테스트 몇번 해 보세요.

스크린 캡쳐 설정은 두가지 경우로 보세요. 첫째로 그냥 화면을 녹화하고 싶다 하면 스무스필터를 적절히 선택하면 됩니다. 둘째로 게임 화면을 녹화하고 싶다 하면 스무스필터를 꺼주세요.(만약 자신의 PC가 성능이 높다면 스무스 필터 적용해도 그만입니다, 다만 스무스필터가 CPU 부하를 많이 주기 때문에 적절히 조절해야 합니다)


압축 설정이 중요하긴 한데, 몇가지만 기억해 주시면 됩니다. 여기서는 H.264 기본 인코더를 사용하세요. 인텔 그래픽을 사용하는 분들 중 녹화를 따로 하지 않고 바로 방송을 통해 자동 녹화 기능을 이용할 경우 H.264 인텔 퀵싱크를 선택해 주셔도 무방합니다. 인텔 퀵싱크를 이용하면, 인텔 내장 그래픽에서 하드웨어 가속을 통하기 때문에 캡쳐 성능이 향상되고 CPU사용율을 적게 먹습니다만, 녹화시에는 기본 인코더를 선택합니다. 이유는 녹화에서 인텔 퀵싱크를 사용해야 하거든요.

해상도는 최대가 720p 입니다. 더이상 높일 수 없습니다. 비트레이트는 많이 정적인 영상이라면 1000Kbps, 움직임이 많다 싶으면 3000Kbps, 움직임이 많은데다 영상이 검은 곳도 많다(보통 게임이겠죠) 하면 4000Kbps로 선택합니다. 프래임은 자신의 PC 사양이 높아서 게임이 60프래임으로 구동 가능하다 하면 60프래임, 아니라면 30프래임 해주세요. 가능하면 원본 프래임 사용은 체크 해제합니다. 녹화 결과가 좋지 않아질 수 도 있습니다. 그 외에 옵션은 자신의 PC상황과 원하는 품질에 맞게 선택해 주시면 됩니다.


동영상 캡쳐에서는 영상 코덱을 H.264 - 인텔 퀵싱크로 사용해주세요. 만약 내장 그래픽을 사용하지 않는다면 H.264 - 오픈 코덱을 사용하거나 외장 그래픽의 영상 가속 디코더를 사용해 주시면 됩니다.(팟플레이어에 외부 코덱 사용 방법은 따로 찾으시는거 추천드립니다) 다만 외장 그래픽의 영상 가속 디코더를 선택하면 게임 성능이 저하될 수 있으니 일단 설정해 보고 측정하는거 추천드립니다.

영상 품질, 해상도, 프래임은 캡쳐설정 당시에 했던대로 맞춰주면 되고 음성 코덱은 MP3에 나머지는 캡쳐설정 당시로 맞춰주면 됩니다.

자 그리고 이제 녹화할 일 만 남았는데, 게임 같은 경우는 해상도를 녹화 해상도에 맞춰주는걸 추천합니다. 그러니까 720p로 해상도를 낮춰서 게임을 플래이하세요. 성능 문제가 아니라 스무스필터를 꺼 두려면 해상도 자체를 낮춰야 영상이 일그러지는 문제가 없습니다.

그러니까, 왠만한건 권장 옵션으로 놔두지만 하드웨어 가속을 할 수 있는 부분이 있다면 이걸 분산시켜서 하드웨어 가속을 시키고 성능에 문제가 없도록 하자, 그리고 녹화되는 영상에 맞춰서 조절하자는 옵션입니다.


결과

트리플 모니터를 활용해 왼쪽 모니터에는 작업 관리자와 GPU-Z로 GPU상태를 확인하였고, 오른쪽에는 캡쳐 영상을 재생하고 녹화를 하는 팟플레이어 창들을 띄워뒀습니다. 이렇게 하여 노트북 화면을 캡쳐하게 되면 위와 같은 시스템 사용률을 보이게 됩니다. 실사용 시스템이니 시스템 리소스 사용량이 원래보다 조금 높다고 생각하고 봐주세요.

또 제가 지금 라이즈 오브 더 툼레이더 영상을 이 방법으로 녹화하여 업로드 하고 있으니, 확인해 보시는것도 좋을 것 같습니다.

사실, 게임 녹화의 경우 Windows 10에서 제공하는 게임 DVR 기능을 사용하는것이 더 좋은데, 이상하게 제 노트북에서는 게임 DVR이 활성화 안되서 어쩔 수 없이 위 방법으로 녹화하고 있네요.




Minny_

,

우분투 크로미움(Chromium)에서 플래시(Flash) 사용하기


크로미움(Chromium)은 구글의 오픈소스 웹 브라우저 프로젝트이며, 구글 크롬은 이 크로미움의 코드로 개발된 브라우저입니다. 우리가 자주 사용하는 구글 크롬과 크로미움의 차이점은 다음과 같습니다.

● 내장 어도비 플래시 플레이어
● 내장 PDF 뷰어
● 구글 이름과 로고
● 내장 인쇄 미리보기와 인쇄 시스템
● 자동 업데이트
● 사용 정보 및 오류 보고서를 구글로 보내기 선택하기
● 사용 정보 추적(구글 웹사이트에서 구글 크롬을 다운로드하지 않을 경우에 이 코드가 포함되어 언제 어디서 구글 크롬을 다운로드했는지 등의 정보를 전송)

출처 : 한국어 위키백과 (링크)

그렇다 보니 웹 서핑을 하다 가장 불편한 점은 바로 Flash의 부재인데, 바로 지금 티스토리에 글을 쓸 때도 이미지, 파일을 업로드하기 위해 플래시를 사용하고 있기 때문에 설치는 필수였습니다.


Flash 플러그인 설치하기

크로미움에 플래시 플러그인을 설치하기 위한 방법으론 3가지가 있습니다.

  1. 우분투 소프트웨어 센터에서 설치 - 방법 1
  2. 우분투 소프트웨어 센터에서 설치 - 방법 2
  3. repository를 추가하고 apt로 설치
  4. 구글 크롬(Google Chrome) 패키지에서 추출하기


2. 우분투 소프트웨어 센터에서 설치 - 방법 1

참조 : https://wiki.ubuntu.com/Chromium/Getting-Partner-Flash

1 ~ 3까지는 우분투 소프트웨어 센터에서 케노니컬 파트너 소스를 사용하도록 하는 방법입니다. 이미 적용되어있다면 4번으로 바로 가도 됩니다.

  1. 우분투 소프트웨어를 실행하고, 메뉴 편집 > 소프트웨어 소스 순으로 들어갑니다.



  2. 기타 소프트웨어 탭에서 케노니컬 파트너 부분을 체크하고 닫습니다.



  3. 저장소 업데이트가 완료되면 adobe-flash-plugin을 검색, 설치합니다.


    또는 터미널에서 아래와 같은 명령어를 입력하고 우분투 소프트웨어 센터에서 설치합니다.

    1
    xdg-open apt:adobe-flashplugin
    cs


2.우분투 소프트웨어 센터에서 설치 - 방법 2

  1. 우분투 소프트웨어 센터에서 Pepper Flash Player를 검색합니다.


  2. Pepper Flash Player - browesr plugin을 찾아 설치합니다.


3. 터미널로 설치

아래와 같은 명령어를 입력하여 설치합니다.

1
sudo apt-get install pepperflashplugin-nonfree
cs


4. 구글 크롬 패키지에서 추출하기


  1. Google Chrome 홈페이지에 들어가 자신의 운영체제에 맞는 deb파일을 다운로드합니다.

  2. 다운로드받은 deb파일의 압축을 풀고 data.tar.zx파일을 압축을 풉니다.

  3. data/opt/google/chrome/PepperFlash/libpepflashplayer.so 파일을 /usr/lib/chromium-browser/plugins 경로로 복사 또는 이동합니다.

    libpepflashplayer.so파일이 있는 경로에서 아래와 같은 명령어를 입력함으로도 가능합니다.

    sudo cp libpepflashplayer.so /usr/lib/chromium-browser/plugins
    cs
  4. 크로미움 브라우저가 이 PepperFlash 플러그인을 사용할 수 있도록 설정합니다.

    sudo gedit /etc/chromium-browser/default파일을 열어

    CHROMIUM_FLAGS=" " 부분을
    CHROMIUM_FLAGS=" --ppapi-flash-path=/usr/lib/chromium-browser/plugins/libpepflashplayer.so"로 변경합니다.


DesignOZ

,

라이즈 오브 더 툼레이더 플레이시 전체화면임에도 가득차지 않을때

개요

현 시점에서 라이즈 오브 더 툼레이더를 플레이 할 경우 전체화면이 되지 않고 화면 일부분이 잘리거나 일부분이 남아 바탕화면이 보이며 작업 표시줄이 게임보다 위에 띄워져 있는 상황에 대한 원인 분석과 해결 방법입니다.

원인

복합적인 원인입니다. 우선 Windows 10에서 사용하는 그래픽 처리 방법의 문제와 바탕화면의 작업 표시줄의 버그, 라이즈 오브 더 툼레이더의 전체화면 기능의 문제가 있는 상황입니다. 일반적인 상황에서도 간간히 일어나긴 하지만, 다중 모니터를 사용하고 있는 상황이라면 100% 일어난다고 생각하시면 됩니다.

상황



저 같은 경우는 이렇게 데스크탑 오른쪽이 남아버리고 마우스가 게임에서 빠져 나오는 문제도 간간히 있습니다.

해결방법

방법에는 3가지 방법이 있습니다. 첫째로 전체화면 독점모드를 사용하는것, 독점모드 사용시 디스플레이 하나를 게임 창으로 할당하기 때문에 이런 문제가 일어나지 않습니다. 다만 게임에서 포커스가 빠지면 디스플레이가 깜빡이기도 하고, 상황에 따라서는 게임이 멈출 수 도 있습니다.

두번째 방법은 게임 실행시 전체화면을 풀었다가 다시 전체화면을 사용하는겁니다 (전체화면 해제후 재설정). 윈도우 10에서 작업표시줄 영역의 인식 문제로 한쪽으로 치우쳐서 나타날 경우에는 100% 해결 됩니다. 이는 정확히 게임의 문제라기보다는 윈도의 버그라고 할 수 있습니다. 만약 다른 게임에서도 비슷한 현상이 일어날 경우에도 이 방법으로 유사한 방법으로 해결 할 수 있습니다.

세번째 방법으로는 게임을 시작할때 다중 모니터를 꺼두고 복제모드나 하나의 디스플레이에서만 보여주는걸로 설정시켜놓고, 작업 표시줄을 아래쪽으로 위치한 다음 게임을 실행시키는것입니다. 역시 윈도우10의 버그를 회피할 수 있는 방법이라 보시면 됩니다.





스크린샷은 두번째 방법입니다.

결론

라이즈 오브 더 툼레이더 재미있네요


Minny_

,

우분투 15.10에서 동영상 플레이어 bomi 설치하기

부제 : apt 저장소를 추가했으나 우분투 배포판과 맞지 않아 설치가 안될 때


제가 예전에 우분투로 넘어오고나서 가장 걱정이었던 부분은 동영상 재생 프로그램이었습니다. 윈도에서 KMP 또는 팟플레이어를 거의 만능처럼 사용하고 있었기 때문에 그랬던 것 같습니다. VLC같은 우수한 소프트웨어가 있었지만 자막부분에서 살짝 모자란듯한 그놈의 smi포맷 느낌이 있어 사용을 잘 안했습니다.

그리고 이번에 우분투를 설치하고 다시 동영상 프로그램이 필요함을 느끼고있을 때, 이리저리 검색해보니 bomi라는 동영상 재생 프로그램을 발견했습니다. 에이핑크 보미 말고


Bomi Player


공식 홈페이지 : https://bomi-player.github.io

전신인 CMPlayer를 새단장하여 bomi라는 이름을 달고 다시 릴리즈되었는데, 2015년 7월 이후로 개발이 중단되어 PPA를 등록해도 우분투 15.10 Wild Werewolf 패키지가 없어 apt를 이용해도 설치가 되지 않습니다. (15.04 Vivid Vervet은 정상 설치가 가능합니다.)

1. apt-get install에서 -f 옵션을 준다.



apt-get install -f 명령어를 입력하여 설치가 가능합니다.


Bomi PPA에서 15.04용 deb 파일을 다운로드합니다. (32bit 운영체제 - i386, 64bit 운영체제 - amd64)

그리고 다음과 같이 설치를 진행합니다.

1
2
sudo dpkg -i bomi_0.9.11ppa1~vivid1_amd64.deb
sudo apt-get install -f
cs

만약 의존성 문제로 설치가 되지 않는다면 libass-bomilibcardet도 함께 다운로드받아 추가해주세요.

1
2
3
4
sudo dpkg -i libass-bomi_0.12.2ppa1~vivid_amd64.deb
sudo dpkg -i libchardet_1.0.4ppa1~vivid1_amd64.deb
sudo dpkg -i bomi_0.9.11ppa1~vivid1_amd64.deb
sudo apt-get install -f
cs

2. 우분투 소프트웨어 센터로 설치한다.

위 1번에서 다운로드받은 Bomi의 deb파일을 실행하여 설치합니다.


(추가) 우분투 14.04 LTS ~15.04 에서 설치하기

LTS 버전인 14.04 (Trusty Tahr)부터 우분투 15.04 Vivid Vervet까지는 아래와 같이 설치할 수 있습니다.

1
2
3
sudo add-apt-repository ppa:darklin20/bomi
sudo apt-get update
sudo apt-get install bomi
cs


DesignOZ

,

우분투, 리눅스 민트에서 Oracle JDK7/JDK8 설치하기



요새 JDK의 사용 용도는 자바, 안드로이드 개발, AOSP 빌드 등인데, 안드로이드 스튜디오를 사용하기 위해서 JDK를 설치해야합니다. OpenJDK가 기본적으로 설치되어있지만 Oracle JDK를 권고하는 편입니다.
뭐든 권장하는 옵션을 제대로 지키지 않으면 삽질은 곧 본인에게 돌아오게 된다고 합니다


윈도를 사용하고있었다면 .exe파일을 실행해 설치하면 되기에 간단하지만 유닉스/리눅스 계열은 그렇지 않습니다. 그리고 우분투에는 기본적으로 OpenJDK가 있어 제거하여야하는 번거러움도 있습니다.


설치 순서는 OpenJDK 제거, JDK 설치 순으로 진행합니다.


1. OpenJDK 제거

우선, 충돌을 방지하기 위해 OpenJDK를 제거해야하므로 아래와 같은 명령어를 이용합니다.

1
sudo apt-get purge openjdk*
cs

2. JDK 설치

JDK 설치 방법은 두가지로 제공됩니다.

Oracle 홈페이지에서 다운로드하는 방법과, apt-get을 이용하는 방법이 있습니다.

Oracle 홈페이지에서 다운로드

이 방법은 JDK8에만 해당됩니다.

이곳에서 JDK를 다운로드합니다. 운영체제에 맞게 다운로드 하면 되는데, 여기서는 우분투를 사용하고있기 때문에 Linux x64 tar.gz파일을 다운로드하도록 하겠습니다.



  1. 터미널 (단축키 Ctrl + Alt + T)을 열고 다운로드받은 파일을 압축해제합니다.

    1
    tar zxvf jdk-8u72-linux-x64.tar.gz
    cs

  2. 압축푼 폴더를 /usr/lib/jvm 의 하위폴더로 이동합니다.

    1
    sudo mv jdk1.8.0_72 /usr/lib/jvm/jdk1.8.0_72
    cs

  3. 심볼릭 링크 (Symbolic Link)와 javac, javaws를 변경합니다.

    1
    2
    3
    sudo update-alternatives --install “/usr/bin/java” “java” “/usr/lib/jvm/jdk1.8.0_72/java” 1
    sudo update-alternatives --install “/usr/bin/javac” “javc” “/usr/lib/jvm/jdk1.8.0_72/javac” 1
    sudo update-alternatives --install “/usr/bin/javaws” “javaws” “/usr/lib/jvm/jdk1.8.0_72/javaws” 1
    cs

  4. java -version을 실행하여 제대로 설치되었는지 버전 확인을 합니다.

    1
    java -version
    cs

Repository를 추가하여 apt-get으로 설치하기

Webupd8 팀에서 ppa Repository를 제공하고있습니다. 자세한 사항은 이곳을 참조하여주십시오.


  1. add-apt-repository로 저장소를 추가합니다.

    1
    sudo add-apt-repository ppa:webupd8team/java
    cs

  2. 저장소를 업데이트합니다.

    1
    sudo apt-get update
    cs

  3. JDK를 설치합니다.

    JDK7 설치

    1
    sudo apt-get install oracle-java7-installer
    cs

    JDK8 설치

    1
    sudo apt-get install oracle-java8-installer
    cs

  4. java -version을 실행하여 제대로 설치되었는지 버전 확인을 합니다.

    1
    java -version
    cs


DesignOZ

,

[안드로이드] Snackbar(스낵바) 사용하기


설명

안드로이드 5.0 롤리팝과 함께 공개된 머터리얼 디자인(Material Design) 가이드에는 Toast와 비슷하지만 뭔가 다른 느낌의 무언가가 있었는데 바로 Snackbar이다.


그래 안녕?!



API 버전 20 이하 (킷캣 이하)의 안드로이드 버전에서는 Support Library v4가 필요하며 API도 간단해서 금방 사용할 수 있다. 이번 시간에는 Snackbar의 구현과, Toast와의 차이점을 설명해보겠다.

자세한 API 설명은 안드로이드 레퍼런스에서 확인할 수 있다.
http://developer.android.com/reference/android/support/design/widget/Snackbar.html

Toast와의 차이점

아래는 Snackbar와 Toast의 API이다.

Snackbar API
Snackbar.make (View view, CharSquence text, int duration)
Snackbar.make (View view, int resId, int duration)

Snackbar 생성시 View와 문자열(리소스 포함), 지속 시간 (int형)을 매개변수로 받는다.
Toast API
Toast.makeText (Context context, CharSequence text, int duration)
Toast.makeText (Context context, int resId, int duration)

Toast 생성시 Context (보통 this), 문자열(리소스 포함), 지속 시간(int형)을 매개변수로 받는다.


두가지 모두 사용자에게 알린다는 목적은 같다. 하지만 약간의 기능과 구현 방법에서 차이가 있다.

  • Snackbar를 API 21 (롤리팝) 이하에서 구현하기 위해서는 SupportLibrary v4가 필요하다.
  • Snackbar은 Action을 통해 OnClick을 설정할 수 있다.
  • Toast는 Context를 인자로 받고, Snackbar는 View를 매개변수로 받는다.

그래도 show() 써줘야하는건 똑같다. 사랑이 돌아오듯 show()도 돌아온다

Snackbar 구현하기




구현하기에 앞서 잠시 위의 영상을 보자. 구글이 머터리얼 디자인을 공개하면서 같이 공개한 영상이다. 4초밖에 되지 않는 짧은 영상이지만 Snackbar를 표현하기는 충분하다.


기본 구현

영상을 잘 보았다면 아래의 코드를 보도록 하자. 위에서 필자는 Snackbar의 API는 간단하다고 했다. 못봤다면 위에서 다시 보고오자.

1
Snackbar.make(view, “Hi! I’m Snackbar!”, Snackbar.LENGTH_LONG).setAction(“Action”null).show();
cs

위의 ‘Hi! I’m Snackbar!’ 이미지를 만들때 썼던 코드다. 간단하다.

1
Snackbar.make(view, “Hi! I’m Snackbar!”, Snackbar.LENGTH_LONG).show();
cs

가뜩이나 짧은 코드에서 Action 부분을 빼면 더 짧아진다. 역시 Toast와 비슷하다.
하지만 여기서 끝나면 재미가 없다. 하지만 이미 이 글은 너무 길다.

Action 구현하기



Toast와의 차이점에서도 말했었다. Snackbar는 Action을 통해 OnClick을 받을 수 있다.


1
2
3
4
5
6
7
Snackbar.make(v, “Hi! I’m Snackbar!”, Snackbar.LENGTH_LONG)
        .setAction(“OK”new OnClickListener() {
            @Override
            public void onClick(View v) {
 
            }
        }).show();
cs

가장 위에 있던 기본 코드와의 차이는 단 하나. setAction이다.
달라진 것은 단 하나. 전부입니다.

Snackbar setAction API
setAction(CharSequence text, OnClickListener listener)
setAction(int resId, OnClickListener listener)

Action의 버튼이 될 문자열(리소스 포함), OnClickListener를 매개변수로 받는다.

OnClickListener의 OnClick에 (5번 라인)에 클릭했을 때의 내용을 작성하면 된다.

DesignOZ

,

[안드로이드] 리눅스 커맨드를 실행하고 결과값을 받아오기

(SELinux 상태 확인하기)


Viper4Android Installer 앱을 만들면서 SELinux의 상태를 확인하는 부분을 넣으면서 리눅스 커맨드를 실행, 결과값을 받아와야했다. ProcessBuilder만으로는 실행은 가능하나 결과를 반환할 수 없었기 때문에 BufferReader를 이용하였다.

ProcessBuilder를 이용해 커맨드를 실행하고 BufferReader를 이용해 결과값을 받아올 수 있다.


예시

뜬금없지만 아래는 완성된 코드예시이다.

1
2
3
4
5
6
7
8
9
10
11
public static String SelinuxStatus() {
    String line = null;
    try {
        Process p = Runtime.getRuntime().exec(“getenforce”);
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
        line = br.readLine();
        return line;
    } catch (Exception e) {
        return null;
    }
}
cs



요약하자면,

SelinuxStatus()를 실행하면 (Process) p가 "getenforce" 명령어를 실행하고, (BufferedReader) br이 (String) line에 p를 실행하고나서의 결과값을 입력한다.

내가 썼지만 무슨 말을 하는지 모르겠다. 그냥 한줄한줄 읽어보자.

설명

line 2 > String line;

문자열 line을 초기화한다. getenforce 명령어를 실행하면 결과값이 문자열로 나오기 때문에 문자열로 초기화하였다.

line 4 > Process p = Runtime.getRuntime.exec(“getenforce”);

“getenforce”라는 명령어를 가져와서 실행한다는 뜻이다. 설정 앱의 휴대전화 정보 (또는 태블릿 정보)에서도 SELinux 상태를 확인할 수 있다.

참고로 “setenforce” 명령어는 SELinux 상태를 변경할 수 있다.
ex) setenforce 0 또는 setenforce 1

line 5 > BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

BufferReader가 프로세스 p의 실행 결과를 받아오도록 초기화, 실행한다.

line 6 > line = br.readLine();

br이 읽은 결과 값을 line에 저장한다.

line 7 > return line;

문자열 line을 반환한다.

line 9 > return null;

try문을 실행도중 에러가 발생시 catch문에서 null을 반환한다.

주요 부분

line 4 > Process p = Runtime.getRuntime.exec(“getenforce”);

line 5 > BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

line 6 > line = br.readLine();

DesignOZ

,