Tips2013. 10. 24. 01:11

4.2 버전 이상이 되면서, 환경 설정에서 개발자 메뉴가 사라졌습니다.


이를 사용하기 위해서는 다소 특수한(?) 작업이 필요합니다.


먼저 환경설정(setting)으로 가서 About phone 메뉴로 갑니다. 


About phone에서 맨 아래로 내리면 build number 가 있을 겁니다. 


이걸 7번 터치해주세요. 친절하게 카운트도 세어줍니다.


그러고 나면 Setting 루트 메뉴에서 개발자 옵션이 생긴 것을 확인 하실 수 있습니다.


왜 이런 뻘짓을 했을까요? -_-;;;


Posted by 곰푼
Gadgets2013. 10. 23. 02:31

POKER2


저는 이전에는 해피해킹2pro를 사용했는데, 기계식의 느낌이 항상 궁금했었습니다. 해피해킹을 쓸때는 생각보다 좀더 가벼운 듯한 느낌이어서, 기계식을 쓰면 좀더 묵직하지 않을까 라는 동경도 있었죠. 사용하는 환경이 연구실이니 청축같이 정말 시끄러운 부류의 스위치는 사용할 수 없었기 때문에, 많이들 추천하는 갈축을 탐내고 있었습니다. 동시에 해피해킹의 배열이 맘에 들고 손에도 익어서, 미니 키보드 위주로 보고 있었고요.

그래서 기성품 중에서 몇가지 키보드를 지켜보고 있었습니다. 레오폴드에서 나온 fc660m이나 오늘 소개해드릴 포커 키보드가 바로 그것입니다. 

보통 인터넷을 통해서 물건을 주문하는데, 이번에는 좀 여러 스위치나 키보드를 타건해보고 싶어서 매장을 직접 찾아가 보기로 했습니다. 지하철 4호선 신용산역에서 내리면 지하도를 통해 갈 수 있는 리더스키라는 매장이 있는데, 이번에 찾아간 곳이 바로 그곳입니다.


http://www.leopold.co.kr/?doc=bbs/gnuboard.php&bo_table=notice&wr_id=62 <- 레오폴드 홈페이지의 오프라인 매장 소개글


들어가면 정말 키보드들을 부담없이 타건해볼 수 있습니다. 더군다나 사장님이 시원한 커피도 주시니, 마른 목도 축여주고요 ^^


거기서 여러 키보드들을 곰곰히 타건해본 결과, 구입해서 데리고 온 녀석이 바로 포커2 키보드입니다. 사진 보실게요~



사진은 서비스로 같이 주신 키캡들을 갈아 끼운 모습입니다. 보시는 바와 같이 미니 키보드 타입인지라 키의 갯수가 적습니다. 총 61개의 키인데, 조합을 통해서 다양한 기능들도 사용할 수 있고 매크로를 통해서 원하는 키배열을 구현할 수도 있습니다. 저는 사실 이부분이 가장 매력적이라 이 키보드를 선택했습니다. 



뒤집어 보면 네 귀퉁이에 미끄럼 방지 패드가 붙어있는 것이 보입니다. 이 키보드는 보는 바와 같이 높낮이를 조절하는 디딤대가 없습니다. 즉, 높낮이를 조절할 수 없으며, 이러한 점은 만약 구입의사가 있다면 고려해야 하는 사항일겁니다.

다음은 커스텀 키배열을 어떻게 사용하는지를 보겠습니다. 매크로 모드로 진입하기 위해서는 우측의 FN키를 누른 상태로 우측 shift키를 눌러야 합니다.



그럼 그림과 같이 스페이스바의 왼편 아래에 LED가 들어오는 것을 확인할 수 있습니다. 이 LED램프가 바로 매크로모드로 변경되었다는 표시입니다. 이 매크로 모드를 사용하기 위해서는 키 매크로를 설정해야 합니다. 그렇다면 매크로 모드는 어떻게 설정할까요?



우측의 FN키와 CTRL 키를 동시에 눌러주면, 프로그램 모드로 진입하게 됩니다. 그러면 위 사진에 보시는 것처럼 LED램프가 켜지게 되는데요, 그냥 켜져있는 것은 아니고 깜박거리게 됩니다. 여기서 내가 원하는 키를 누르고, 원하는 기능키를 누른다음에 PN 키를 누르면 매크로가 설정됩니다. 설정으로부터 빠져나가기 위해서는 진입할때 눌렀던 것처럼 FN키와  CTRL키를 눌러주면 됩니다.

예를 들어보겠습니다. 많이 사용하는 매크로가 Backspace와 \(역슬래시)를 서로 바꿔주는 겁니다. 먼저 프로그램 모드로 진입하고, Backspace아래의 \키를 누릅니다. 그러면 깜박거리던 LED가 계속 켜질겁니다. 그때 Backspace 키를 누르고 PN키를 누릅니다. 그러면 다시 LED가 깜박거리게 되고, 앞으로 이 모드에서는 \키가 Backspace 역할을 하게 됩니다. 그리고 \키 맵핑을 위해서 Backspace를 누르고 \를 누른 뒤 PN을 누르면 완성! 서로 키가 뒤바뀌게 되었습니다. 이제 프로그램 모드에서 빠져나간 후(FN + CTRL), 매크로 모드 (FN + SHIFT)로 들어가면 이 맵핑을 계속해서 사용할 수 있습니다.



왼쪽 위에서 찍어본 모습입니다. 포커2는 PBT키캡을 사용한다고 합니다. 그리고 특유의 정갈한 폰트에 더해서 (저는 예전 학술지의 제목 폰트를 보는 기분입니다만) 키캡의 정가운데 위치하고 있어서 독특한 느낌을 자아냅니다. 키캡을 손가락으로 더듬어보면 까슬까슬하면서도, 모서리의 각진 부분이 단단한 느낌을 받게 합니다. 해피해킹은 좀더 부드럽고 묵직한 느낌이었다면, 포커2는 단단하고 야무진 느낌이라고 할까요? 




비교사진입니다. 해피해킹이 포커2보다 조금 더 크군요. 같이 출연해준 너굴군이 손바닥만하고 응징이(새인형)가 주먹보다 약간 작으니 크기를 짐작하실 수 있겠죠?


갈축의 느낌을 설명해보자면, 조금 심심한 듯 하면서도 키를 눌렀다는 구분감이 드는 느낌입니다. 이 부분은 말로 설명하기 힘들군요-_-;; 여러 스위치를 타건해본 결과 흑축이 가장 좋다고 느꼈는데, 아쉽게도 포커2는 흑축이 별로 없답니다. 하지만 갈축도 치다보니 재밌기도 하고, 또 오래 타이핑해야 하는 제 상황을 생각해 봤을 때 더 적합하지 않을까 기대하고 있습니다.




'Gadgets' 카테고리의 다른 글

해피해킹 리뷰  (3) 2014.02.18
해피해킹 간이 윤활  (0) 2014.02.08
체리 OEM 키캡 - 키보드매니아 공구  (0) 2013.12.26
Matias Laptop pro  (0) 2013.12.23
HappyHacking Pro2  (0) 2012.04.26
Posted by 곰푼
Tips/Kernel development2012. 9. 30. 01:21

Virtual File System


리눅스를 비롯한 대부분의 유닉스 계열 운영체제는 VFS라는 레이어를 제공한다. 이것은 표준의 SCI(System Call Interface)와 ext2, ext3 를 비롯한 실제 파일시스템 구현 사이에 존재하는 일종의 인터페이스이며, 커널은 이 인터페이스를 통해서 파일시스템 수준에서 동작해야 하는 작업을 처리하기 때문에 가상 파일 시스템(VFS)라는 이름이 붙게 되었다.


그렇다면 왜 VFS가 존재하게 되었는가?


컴퓨터 기술의 발전과 동시에 이를 관리하기 위한 시스템 기술들도 발전하게 되었다. 커널은 비선점형 커널에서 선점형 커널로 발전하였고, 멀티 코어를 지원하기 위한 개념들도 등장하게 되었다. 이는 저장장치와 이 저장장치를 다루는 드라이버 레벨의 소프트웨어, 그리고 보다 추상적인 관점에서 운영체제와 저장장치간의 교두보 역할을 하게 되는 파일 시스템도 마찬가지이다. 기존의 UFS에서 도스 기반의 FAT, 리눅스의 등장과 함께 그 발전을 함께한 ext 계열의 파일 시스템들이 바로 그 맥락에서 발전해온 파일 시스템들이다. 


파일 시스템은 사용자 어플리케이션을 대신하여 파일 레벨의 작업을 수행한다. 사용자 어플리케이션이 표준 라이브러리의 함수를 호출하여 특정 파일에 '쓰기'작업을 한다고 치면, 라이브러리는 커널의 write() 시스템 콜을 호출할 것이다. 커널은 해당 시스템 콜에서 타겟으로 하는 파일이 존재하는 파일시스템에게 write() 시스템 콜에서 정의되어 있는 루틴대로 작업을 시킬 것이고, 파일 시스템은 작업을 처리한 후 커널에게 다시 적절한 값을 리턴할 것이다. 최종적으로 사용자는 커널과 표준 라이브러리로부터 리턴값을 돌려받아 작업이 제대로 처리되었는지를 확인하게 될 것이다.


이는 파일 시스템이 하나만 존재하는 경우에만 성립한다 할 수 있다. 파일 시스템이 둘 이상 존재하게 될 경우, 모든 파일 시스템이 동일한 함수를 제공하지 않는 이상 시스템 콜도 그에 맞추어 서로 다른 루틴으로 작성되어야 할 것이다. 이렇게 되면 새로운 파일 시스템이 생길 때마다 새로운 시스템 콜이 작성되어야 할 것이고, 운영체제도 다시 컴파일 되어야 할 것이다.


이런 문제점을 해결하기 위해서 커널은 모든 파일 시스템이 지켜야할 일종의 표준 모델을 제시하였다. 앞으로 살펴볼 VFS상의 컴포넌트들이 바로 그것인데, 리눅스 커널은 이 모델을 정의하며 객체 지향 모델의 특징을 가져왔다. 하나의 자료구조에 관리를 위한 변수 뿐 아니라 함수의 포인터들의 선언으로 이루어진 테이블을 정의한 것이다. 다음은 표준 모델 중 하나인 struct file의 간략한 예시이다. 


struct file {

struct list_head f_list;

struct dentry * f_dentry;

struct vfsmount * f_vfsmnt;

struct file_operations * f_op;

...

};


struct file_operations {

int (*llseek) (struct file*, int, int);

int (*func2) (int, void *);

...

};


file_operations는 해당 함수의 원형을 정해놓고, 포인터의 형태로 선언한 것이다. 파일 시스템은 이러한 구조체로 제시된 함수의 형식에 맞추어 그 세부사항을 구현하면 된다. 그렇게 되면 커널은 VFS 수준에서 해당 파일시스템의 함수 포인터를 이용한 호출로 작업을 완료할 수 있게 된다. 마치 객체 지향 모델의 인터페이스(혹은 추상클래스)와 같은 모습이라 할 수 있겠다. 


이러한 표준 모형을 제시하기 위해서 VFS는 4개의 객체를 정의한다. 각각은 다음과 같다.

  1. super_block
  2. inode
  3. dentry
  4. file
이 다음부터는 각각의 자료구조와 역할에 대해서 알아보기로 한다.


'Tips > Kernel development' 카테고리의 다른 글

PID Namespace  (0) 2012.03.15
Linux Kernel : 커널이란  (0) 2012.01.31
Posted by 곰푼