기본 콘텐츠로 건너뛰기

Java 람다함수에서 외부지역변수를 수정할 수 없는 이유

i-rocks RF-6570 Keyboard+Mouse Set

집에서 노트북을 밥상위에 얹어 놓고, 침소에까지 끌고 와서 각종 애니매이션이나 영화를 보거나, 게임을 하는 것까지는 좋았지만 PageDown(다음 파일), →(오프닝 넘어가기) 외에도 파일 선택/실행을 하기 위해서 엄청나게 불편한 자세를 유지해야만 하거나 매번 일어나서 조작을 해야했다. orz OTL

그러나!!

이러한 불편함을 한 방에 날려주는 멋스러운 녀석이 있었으니, 무선 키보드+마우스이다!! 이것만 있으면 내 폐인생활은 더욱 풍요로워진다고 당당히 말할 수 있다! (보기완 달리 번듯한 직장 있음. 백수 아님. 결혼도 했음!) 이 장비를 갖추기 위해 여기저기 수소문한 결과 큰 산이 있다는 것을 발견했다.
  1. 가격
    - Microsoft社나 Logitech社 제품이 유명한 것 같은데, 뭐...뭐냐 이 미칠 듯한 가격은? 5만원!? 좀만 줄여주면 안 될까?
  2. 충전
    - 일부 제품은 내장 배터리를 사용하여 좀더 오랜 시간 사용할 수 있고, 배터리 사러 나가야하는 수고스러움도 던다고 하지만, 내 친구가 내장 배터리 제품 사용하는데 시간(1년쯤) 지나니까 배터리 수명이 간당간당해서리... 게다가 그런 녀석은 전용충전기를 책상에 반드시 유선으로 연결해놓고 있어야하는 최악의 단점을 가지고 있다. 결국 생각한 것이 일반 AA/AAA 표준 전지를 쓰는 녀석을 고르기로 했다.
  3. 인식
    - 입력장치로부터 신호를 받는 수신기(동글)에 따라 각도가 조금 빗나가도 입력을 가볍게 무시하는 악성단점이 있다. (이럴꺼면 무선 장치 필요 없지)
  4. 키보드 터치감
    - 키보드를 많이 쓰는 직업을 가지고 있기에 터치감에 예민한 편이다. 게다가 일반 멤브래인 방식은 처음에는 괜찮지만, 시간이 지나면(특히나 큰 키 - 스페이스바, 엔터) 뻑뻑해지고, 손가락에 고통을 주게 된다. 요즘이야 껌값이다고 좀 쓰다 버리면 된다지만(부자쉐키들!), 배고픈 난, 특히나 일반 키보드보다 배에 가깝게 비싼 무선 키보드를 손쉽게 버릴 수 없을 것이다. 개인적으로 맘에 드는 건 노트북 키보드~* 잘그락잘그락~*
  5. 마우스 무게감
    - 개인적으로 별로 상관 없지만, 많은 사람이 살짝 묵직한 녀석을 좋아한다. 핏!
이래저래 돌아보다가 i-rocks에서 RF-6570 무선 세트를 발매했고, 따져보고 결국 질렀다. 가격은 4만원 초반대. 배송이야 판매업체와 배송업체에 달릴 것이니 넘어가고, 뜻하지 않은 시간에 도착해서 기쁜 마음에 포장 사진 찍을 것도 없이 냅다 뜯어서 테스트하고 대략 만족해서 이렇게 리뷰(?)를 쓰고 있다.

  1. 가격
    - 4만원 초반대. 다른 유명회사 쓸만한 제품에 비해 아주매우많이 싼 편이고, A/S도 다른 외산에 비해 좀더 빠를 것으로 예상한다.
  2. 충전
    - 표준 AA전지가 키보드에 2개, 마우스에 1개 들어간다. 충전지를 쓰든 에라자빠져(가칭)를 쓰든 전용충전기가 필요하지 않고 내장 배터리 내구성을 고려치 않아서 부담이 덜하다.
  3. 인식
    - 뒤로 돌아 앉아서 해도 잘 작동한다. 마우스가 좀 빠른 편인데, 제어판에서 두 단계 정도 낮춰서 사용하면 기존 마우스와 동일한 것 같다. (2.4GHz로 인식거리만도 15m라고 한다. 우리집 거실 모든 변이 그랬으면 좋겠다.)
  4. 키보드 터치감
    - i-rocks 키보드다.
  5. 마우스 무게감
    - 그냥 번들 마우스보다 살짝 무거운 정도이다.
그외에 사은품으로 인조가죽 마우스패드, 마우스케이스(파우치)를 제공하며, 싸구려 티가 나지 않아서 살짝 기분이 더 좋았다, 헤헤헤

수박 겉핥기 식으로 살짝 들춰보자.

무려 2.4GHz를 수신할 수 있는(사실 2.4GHz가 뭔가 대단한 수치는 아니다) 동글이다. 시커먼 녀석인데, 신호를 받을 때마다 내장 초록색 LED가 깜빡여준다. 밤에 불 끄고 웹 서핑에 집중하다가 모니터 뒷 쪽 초록 오로라를 보고 식겁하지 말자. 크기는 USB부분을 제외하고 엄지손가락 한 마디 정도다.

동글과 함께한 마우스이다. 아, 바닥에 깔린게 동봉된 인조가죽 마우스패드이다. 번들마우스에 비해 살짝 튀는 외형이지만, 기타 경쟁사 제품에 비하면 수수할 정도이다. 마우스는 i-rocks RF-7550 모델이다. 단품으로도 판매한다.

요즘 대세인지 어쩐지는 모르겠지만, 웹서핑을 도와주는(더욱 폐인질을 쉽게 해주는) 보조키도 왼쪽에 두개가 예쁘장하게 달려 있다.

반면 왼손잡이는 쓰지 말라는 듯이 오른쪽면에는 아무 것도 없다. 이런 것도 살짝 신경 써줬으면 좋았텐데 말이다.


휠 윗부분에 보이는 것은 배터리가 얼마 안 남았을 때 반짝이는 LED이다. 휠은 적당한 무게감을 가지고 있다.


드 넓은 등빨? 남자 손엔 적당할 것 같고, 여자 손엔 살짝 클 것 같다.


배에는 센서와 AA건전지를 넣을 수 있는 공간이 있다. 물론 건전지를 넣고 닫을 수 있는 뚜껑이 있으니 안심하시라. 아무리 작아도 마우스도 전자기기이고 태워서는 안 되는 기기이기에 그냥 쓰레기통에 투척하지 말라는 그림이 그려져 있다.(해몽이 더 좋다) 번들로 주는 건전지는 Bexel이고 총 4개를 준다. (나중에 하나 남는다) 마우스에는 특별히 전원 스위치도 있다.


하악하악 다음은 키보드이다. 검은색 키보드 몸통은 광택이 있고, 키에는 광택이 없다. 그러나 오래 써본 사용자로서 곧 키에도 광택이 살 것이다.


나즈막한 키 높이는 정말 좋다.


키 배열은 현재 쓰고 있는 KR-6170과 정확히 동일하다. 아주 좋아...


다만 키패드 위에 쓸모 없는 전원버튼이 없어졌고, 전원절약을 위해 CapsLock, ScrollLock, NumLock LED가 없고, 마우스처럼 전지가 다 떨어졌을 때 경고를 위한 LED가 하나 있다. 혹시 각종 Lock LED를 보고 싶은 사람은 i-rocks홈페이지에서 프로그램을 다운 받아 설치하면 Lock키를 눌렀을 때마다 화면 하단에 잠깐 표시해준다.


키보드 높이도 낮은 편이다. 동글과 함께 제일 높은 윗쪽을 찍어 보았다.


물론 키보드 높이를 조절할 수 있는 받침이 있고, AA건전지 두 개를 넣을 수 있는 공간이 있다. 마우스와 달리 전원스위치가 없다. 전지를 넣는 순간부터 작동이닷! 하악하악!


비싼 키보드라서 약 천 원 정도 더 주고 키보드 스킨을 추가 주문했다. 그러나 실망스럽게도 너무 두꺼워 키감을 멤브래인급으로 떨춰준다.


유선 KR-6170 키보드용이라 그런지 전원스위치용 공간이 있다.

키스킨이 아주매우많이 실망스럽긴 했지만, 전체적으로 적당한 가격(그래도 살짝 더 싸면 안 되겠니?)과 뛰어난 성능, C/S를 의식한 비교적 자세한 작동 알고리즘 설명(DeepSleep, 마우스 감도에 대한 설명 등)에서 매우 흡족한 제품이다. 게다가 아주 제대로 폐인질하면서 쓰고 있으니 말 다했다.

2008년에도 더더욱 허리를 바닥에서 떼는 일이 없겠군. 고마워, i-rocks!




출처: 3wish

댓글

이 블로그의 인기 게시물

Bash Array, Map 정리

Bash에서 Array, Map에 대한 정리. (매번 찾기 귀찮) 찾아보진 않았지만, Bash에서 Array든 Map이든 동일하게 Map(C++에서 Unordered Map)으로 동작하는 것 같다. 왜냐하면, Array의 Index가 연속하지 않아도 동작한다. 그저 Key가 0 이상의 정수인 Map이랑 비슷하게 동작한다. 예) 1, 2, 3, 9, 10 Array # 생성 declare -a empty_array declare -a ar=(haha hoho baba "long string haha hoho") # 접근 echo "ar[0]=${ar[0]}" echo "all as array=${ar[@]}" # 큰따옴표 안에서 각 원소를 따로따로 전달한다. echo "all as one=${ar[*]}" # 큰따옴표 안에서 각 원소를 문자열 하나로 합쳐 전달한다. echo "indexes=${!ar[@]}" echo "indexes=${!ar[*]}" echo "length=${#ar[@]}" echo "length=${#ar[*]}" echo "last=${ar[-1]}" echo "last=${ar[@]: -1}" # 콜론 뒤에 빈 칸이 꼭 필요하다. 옛 방식 # 현재 상황 declare -p ar #(출력) declare -a ar=([0]="haha" [1]="hoho" [2]="baba" [3]="long string haha hoho") ar[100]=hello # 인덱스를 건너 뛰어도 동작한다. declare -p ar #(출력) declare -a ar=([0]="haha" [1]="hoho" [2]="baba" [3]=&

SQLite에서 파일 크기 줄이기

간단한 개인 프로젝트를 하고 있는데, SQLite DB파일 크기가 매우 커져서 테이블에 필요 없는 레코드를 날렸다. 그런데 날리고도 파일크기가 그대로라서 여기저기 뒤져보니 VACUUM 커맨드를 사용하란다. 사용법은 매우 간단하다. 그저 "VACUUM;"이라고 날려주면 동작한다. (참조: http://sqlite.org/lang_vacuum.html ) 다만, 동작이 매우 느려서 자주 쓸만한 것은 아니다. 실제로 100MB짜리 파일을 7KB로 줄이는데 수 분이 걸렸다. 소스를 봐야겠지만, DB를 EXPORT한 뒤에, 파일을 지우고 다시 IMPORT하는게 아닐까 하는 의구심이 든다. 매번 하기 귀찮으면 "PRAGMA auto_vacuum=1;"를 하면, 새로운 빈 페이지(DELETE나 DROP TABLE 같은...)가 생길 때마다, VACUUM을 실행한다. 다만, SQLite구조 문제로 테이블을 생성하기 전에 미리 날려야하는 안타까움이 있다. (참조: http://sqlite.org/pragma.html#pragma_auto_vacuum )

std::thread에서 클래스 메소드 호출하기

C++11이 나온지 어언 3년... 그동안 GCC도 많이 발전하고 해서, 귀찮은 pthread_* 함수를 쓰는 것보다, 잘 감싼 std::thread를 써보고 있다. 딱히 커다란 장단점은 찾아볼 수 없지만, 콜백 함수 형태에 구애받지 않는다. C++11이 갖는 꽃별천지 언어특성과 표준라이브러리가 만나 그렇게 할 수 있는 것이지만, 자세한 설명은 생략한다... (응?) 보통 일반 함수를 쓸 경우, 아래와 같이 쓸 수 있다. void cb_func1(void) { /* ... */ } void cb_func2(int i) { /* ... */ } void init(void) { std::thread t1(cb_func1); std::thread t2(cb_func1, 10); t1.join(); t2.join(); } 그러면 메소드를 쓰다면...? 메소드 포인터 다음에 객체 포인터를 넣어서 해결할 수 있다. class MyThread { public: MyThread() { m_th = std::thread(&MyThread::proc, this); m_th.detach(); } private: void proc(void) { /* ... */ } private: std::thread m_th; }; 요로코롬 할 수 있다. 물론 밖에서 호출할 때는 "this" 대신에 해당 객체 포인터를 넘겨야 제대로 동작한다.