DIY 키보드 고치기

회사에서는 리얼포스 106을 사용하고 있습니다. (물런 개인 키보드 입니다. 자랑질~*)
(87은 아무리 구해도 구할 수 가 없어.. 어쩔 수 없이 106키를 쓰고 있는데.. 마우스와 키보드를 오갈때마다 많이 불편하네요. 짤라버리고 싶은데, 짜르실 줄 아는 기술자님이 지금은 작업을 안하신다고.. ㅠ,.ㅠ)


물런 ESC 키캡은 Red죠! ㅎㅎ

 

 
맘같아선 이 녀석을 들고 출퇴근하며 집에서도 쓰고 싶지만..
무게도 생각보다 좀 있고,
귀찮고,
들고 다니면 아무래도 먼지가 배부르게 잡수실 것 같고,
충격에 상대적으로 많이 노출 될 것이고,
그냥 주말마다 가져가서 사용하고 있습니다.
우리는 주말부부. (응?)

그럼 집에서는 무엇을 쓰냐?
바로 필코 마제터치 갈축을 약 5년정도 사용하고 있습니다.

 

 
기계식이지만 소음은 상대적으로 적은편에 속하고, 키감도 맘에 들어했던 녀석입니다.
중간에 쓰던 녀석이 고장이 났지만, 또 다시 일본에서 사온 녀석이죠.
이 녀석을 총 3번을 구매해서 쓸만큼 애착이 있는 모델입니다.
(물런 리얼포스 앞에선 헌신짝)

 

 

그런데 이 녀석이 언제부턴가 R이 눌렀다 안눌러졌다 그러더군요..
별로 신경 안쓰고 있었는데.. 언제부턴가 슬슬 짜증이 나더군요.
그래서 고장나서 안쓰고 있던 다른 마제터치(마찬가지 갈축)의 키를 하나 빼서 교환해주기로 마음 먹었습니다.

이 고장난 녀석도.. 허접하지만 한번 직접 고쳐서 사용했던 녀석인데..
콘덴서가 문제인지, 아니면 땜빵한 배선이 충분한 전력을 공급을 못하는건지..
중간중간 전력이 약해지면서 연결이 끊어지더군요

 

 

 

먼저 고장났던 키보드를 분해하고.. 인두기로 지져서 엔터키를 탈착했는데..
젠장!! 다리 하나가 끊어졌습니다.

 

 
어쩔 수 없이 엔터키는 버리기로 하고.. 메뉴키를 뽑기로 결정
왜 하필 메뉴키냐면.. 키캡이 떨어져 있길래.. 마치 ‘날 좀 뽑아주소’라고 나에게 전언을 보내고 있다는 느낌을 받아서랄까? 응?

순식간에 옥수수 2개 털린 키보드

 

 
고장난 R키와 바꿔치기 해줬습니다.
이게 바로 잘 안눌리던 R키 입니다.

 

 
납땜을 한 후 USB에 연결해서 R이 제대로 눌리는지 확인해봅니다!
우오오오!!!!!! 잘 됩니다! ㅎㅎㅎ
케이스 마저 조립하고.

옥수수 2개 털린 키보드의 뒷태와 장기이식으로 인해 새 생명을 얻은 키보드

 

 

근데 이제는 E키가 잘 안눌리는것 같습니다.

아놔……

Mac Terminal에서 Home, End키 쓰기.

RoR에서 Terminal을 사용하기 때문에 이 카테고리에 넣습니다.
양해를 쿨럭~;

Mac Terminal의 Home, End키의 기본 세팅이 스크롤 최상단/최하단 (좀 더 정확하게 말하면 버퍼의 최상단/최하단)으로 이동이 됩니다.
하지만 일반적인 상황에선 현재 줄의 처음과 끝으로 가는 용도로 많이 사용하죠.
(여기서 OSX에 불만 하나.. 왜 프로그램마다 Home, End 동작이 틀리냐고.. Home, End만 틀린게 아님. 틀린키 무지 많음.)

평상시에는 그냥 그러려니 하고 별 문제 없이 쓰지만, 막상 필요한 순간이 오면 참 짜증이 나는.. 뭐 그런 기능입니다.

아래 Terminal에서 Home, End키 적용하는 법입니다.

1. Preferences를 엽니다.

 

 
2. 그런후 사용하시는 스킨의 Keyboard로 이동 합니다.
3. Home을 선택, Edit을 누릅니다.

 

 
4. Action을 “Send string to shell”로 선택하시고, 33[1~를 입력후 OK
33[1~는 복사해서 붙여넣으세요.

 


5. 마찬가지로 end를 선택 하신 후 Edit

 

 

 
6. 이번에는 33[4~를 입력

 

 

끝입니다.

혹시 PageUp/Down을 원하신다면, 마찬가지 방법으로
PageUp: 33[5~
PageDown: 33[6~

를 입력하시면 됩니다.

Xcode4에서 범용으로 쓸 수 있는 library만들기.

개발하다보면 Common Module 혹은 Common Library 등.. 이런 뉘앙스의 이름으로 불리는 녀석들이 있다.
개발하는데 공통적으로 쓰이는 것들을 모아놓은 녀석들을 지칭하는 말인데,
cocoa에서는 이렇게 안부르고 static library라고 부른다.

iPhone, iPad의 경우 시뮬레이터가 있다보니 시뮬레이터(simulator)용, 디바이스(device)용 이렇개 2가지를 만들어서 상황에 맞게 사용을 해야 하는데, 이게 참 번거로운 일이다.

생각해보라.
시뮬레이터로 테스트 할땐 시뮬레이터용 라이브러리를 넣고
디바이스에서 테스트 할땐 시뮬레이터용 라이브러리를 삭제하고, 디바이스용 라이브러리를 넣고
다시 시뮬레이터로 테스트 할땐 디바이스용 라이브러리를 지우고, 시뮬레이터용 라이브러리 넣고.
지금 TAd(SK T에서 제공하는 광고)가 이렇게 구현되어 있다.

하지만, 다행스럽게도 라이브러리를 하나로 합칠 수 있다.
lipo를 이용하면 되는데, 잠시 후에 언급하겠다.

1. 라이브러리로 만들 프로젝트 생성

라이브러리로 만들 프로젝트를 새로 만든다. 이때 타입은 Cocoa Touch Static Library이다.
iOS > Framework & Library > Cocoa Touch Static Library

 

 

 

 

 

Library라는 이름으로 프로젝트를 생성했고, 공통으로 쓰이는 모듈을 모아놓은 파일을 프로젝트에 추가를 한다.
Common.h, Common.m 파일을 추가했다.

 

 

 

2. 시뮬레이터용(simulator) Target 만들기.

새로운 Target을 추가를 하는데, Target의 타입 또한 Cocoa Touch Static Library이다.

 

 

 

 

 

 

 
시뮬레이터용 라이브러리이므로, Target이름은 Library-Simulator로 하겠다. (네이밍은 본인 마음대로)

 

 

 

 

 
그리고 파일을 Build Phases에 추가를 해야 한다.
헤더(.h) 파일은 Copy Headers에, 소스(.m)파일은 Compile Sources에 드래그&드랍(Drag&Drop)으로 추가를 한다.
Header는 Public, Private, Project 이렇게 3가지 타입을 가지고 있다. 목적에 맞는곳에 넣으면 되며, 기본값은 Project이다.

 

 

 

 
그리고 마지막으로 Scheme 타입에 Build Configuration을 Release로 변경한다.
Product > Edit Scheme

 

 

 

3. 디바이스용(device) Target 만들기.

2. 시뮬레이터용(simulator) Target 만들기.와 똑같은 작업의 반복이다. 이름만 다른것으로 바꿔주면 된다.
Library-Device라고 하겠다.

 

 

 

4. Targets 합치기.

위에서 언급했던대로, 지금 만든 2개의 Target을 하나로 합치는 Target을 만든다.
이번에도 Add Target을 하는데, Aggregate로 만든다.
Other > Aggregate

 

 
이름은 Library-iOS4.0 으로 하겠다.
이번에도 마찬가지로 Edit Scheme에서 Build Configuration을 Release로 변경한다.

 

 
Run Script를 추가를 한다.
Add Build Phases > Add Run Script

 

 

 

 

 
그리고 나서 lipo를 이용한 두 Target을 Merge하는 구문을 넣는다.

 

rm -rf ${BUILT_PRODUCTS_DIR}/libLibrary-ios4.0.a
lipo -create “${BUILT_PRODUCTS_DIR}/../${BUILD_STYLE}-iphonesimulator/libLibrary-Simulator.a” \
“${BUILT_PRODUCTS_DIR}/libLibrary-Device.a” -output \
“${BUILT_PRODUCTS_DIR}/libLibrary-ios4.0.a”

 

보시다시피 sh 명령어이다. 파일명은 본인의 상황에 맞게 수정하면 된다.
위 명령어를 보면 대충 파악 되겠지만, 두개의 .a를 하나의 .a로 Merge해주는 명령어다.
지금은 빌드를 안했기 때문에 libLibrary-simulator.a와 libLibrary-device.a가 없다.
여기서 주의할점은, 빌드를 하면 lib이 접두어로 붙게 된다. 그러므로 .a 파일명에 접두어로 lib을 붙이는걸 잊지말자.

 

 

 

5. 빌드하기

자, 이제 세팅은 완료가 되었다. 각각의 Target을 Build해주면 된다.

 

 
먼저, Library-simulator 빌드!

 

 

 
이젠 Library-Device 빌드!

 


Library-simulator.a, Library-device.a 파일 모두 생성되었다.

 

 

 

 

 

마지막으로 Library-iOS4.0 빌드!

 

 

 
이제 만들어진 libLibrary-iOS4.0.a를 사용하면 되는데, 이 녀석의 위치는
libLibray-Device.a를 우클릭해서 Show in Finder로 보면 Finder가 열리는데, 그 위치에 있다.

 

 

 

 
이제 libLibrary-ios4.0.a와 Common.h 파일을 작업중인 프로젝트에 넣어서 사용하면 끝!

만약. libLibrary-ios.4.0 빌드를 실패했다면 십중팔구 파일을 lipo에서 파일을 못찾아서 나는 에러이다.
아래 4가지 항목을 체크해보면 해결 될 것이다.

  • 만들어놓은 Target들의 Build Configuration이 Release로 되어 있는지
  • Library-simulator는 Simulator로 빌드했는지
  • Library-device는 device로 빌드했는지
  • Library-ios는 device로 빌드했는지

TextMate 숨어있는 편집 기능 사용하기 및 단축키 몇가지

 

Edit+ 짱!

Windows에서 개발을 할때는 무조건 Edit+만 사용했었다. (PHP뿐만 아니라 RoR할때 조차도!)

 

 

그 이유는

  • 10년 넘게 사용해왔다는 점.
  • 정식 라이센스를 보유하고 있다는 점.
  • 베타 테스터라는 이유. (개발자와 100통이 넘는 메일을 주고 받았다.)

도 있었지만,

  • 10년 가까이 사용해오다보니 왠만한 단축키는 거의 다 외우고 있었고
  • 직접 단축키를 할당하는 등의 커스터마이징도 많이 되어 있었고
  • 무엇보다 막강한 편집기능 때문이었다.

막강한 편집기능의 간략한 예를들면..

  • 주석 추가/제거
  • 현재 케럿에서 앞/뒤로 줄 삭제
  • 현재 줄 복사/삭제
  • 현재 줄을 위/아래로 이동
  • 현재 단어 삭제
  • 캐럿기준 앞뒤 문자 바꾸기
    이것 정말 쏠쏠한 기능이다. 고속으로 타이핑 하다보면 철자의 앞뒤를 바꾸는 경우가 있는데 이 기능을 실행하면 앞뒤 문자를 바꿔준다. 예를들어 form인데 from으로 쳤다고 하자. o와 r 사이에 캐럿을 놓고 Ctr+T(단축키는 정확히 기억이..) 누르면 form으로 짠!

등등등 Edit+ 편집메뉴에 있는 모든 기능을 능수능란하게 사용하다 보니 RoR을 할때도 Textmate보다 Edit+로 하는게 비교도 안되게 빨랐다.
(개발툴을 능숙하게 사용하는것도 개발자의 능력임을 잊지말자!)

그러다 몇년전 OSX로 넘어오면서 어쩔 수 없이 Textmate로 넘어왔는데, 이건 뭐 도저히 작업속도가 안나오는 것이다.

뭐 Textmate도 그럭저럭..

 

 
사람들이 Textmate에 훅~가는 멋진 기능중 하나가 바로 “코드 자동완성”인데.. 사실 이거 Edit+에도 있다.
사실 Textmate가 좀 더 미려하고, Smart한것은 인정! 하지만 개발속도에 영향을 줄 정도는 아니다.

어쩌다 보디 Edit+ 찬양글이 되어가고 있는데, 10년을 쓴 Edit+인데 Textmate가 성에 안차는걸 어떻하랴..

돌아와서, Textmate의 막강한 기능이 바로 커스터마이징이다. 내가 필요한 기능이 있으면 만들어서 추가해버리면 된다. 물런 Edit+도 가능하지만 한계가 명확하다.
Textmate가 제공하는 기본 편집기능도 Edit+만큼은 아니지만 나름 괜찮은 기능들을 제공한다.
다만 Text Bundle에 숨겨져 있다는게 문제.

그러므로 Textmate로 개발을 해야 하는 개발자라면 시간을 투자해서 Text Bundle과 자기가 사용하는 Language의 Bundle을 처음부터 끝까지 여러번 살펴보는것을 권장한다.
(다시한번 말하지만, 개발툴을 능숙하게 사용하는것도 개발자의 능력임을 잊지말자!)


Bundle의 단축키를 수정할 수 있으므로 자주 쓸법한 녀석은 단축키를 지정해 놓는것이 편하다.
이런것중 유용한것 하나가 “줄 끝 공백 제거”같은 기능이 있는데.. 단축키가 할당되어 있지 않다.

필자의 경우 ⌃. 으로 단축키를 할당해서 쓰고 있다.

단축키가 이미 꽉 차 있거나, 단축키가 너무 많거나 혹은 휴먼 메모리가 딸려서 외우지 못할경우 Bundle Item ⌃⌘T (Bundles → Select Bundle Item)을 찾아서 실행하면 된다.

 

 

Textmate 편집 단축키

필자가 자주 애용하는 편집 기능은

  • ⌥⌘.(마침표): HTML 안닫힌 태그 있으면, 닫힌 태그 입력
  • ⌃⇧,(쉼표): HTML 태그 생성
  • ⌃⇧.(마침표): Language의 시작, 출력, 주석 등등 (Bundle에 따라 틀림)
  • ⌘/: 주석 추가,제거
  • ⌃W: 단어 선택
  • ⌃⇧K: 줄 삭제
  • ⌃⇧D: 줄 복사
  • ⌃⌘↑↓: 줄 이동
  • ⌘F: 검색
  • ⌘G: 다음 검색
  • ⇧⌘G: 이전 검색
  • ⌃⌘F: 모두 변환
  • ⌥⌘F: 변환하고 찾기

Bundle에 있는 기능도 있고, Edit 메뉴등에 있는 기능도 있다.
막상 써보니 그리 많지는 않은데 빼먹은것들이 꽤 있을듯한다. 누락된것은 생각이 나거나 새로 발견하는 것들은 계속 추가할 예정이다.

URL

ps. 여러분이 사용하시는것 있으면 우리 공유해요~
코멘트로 써 주시면 올리신 분 아이디와 함께 단축키 목록에 추가할게요!

Xcode4 불편한점.

 

1. 단축키가 대거 바뀐점.

아.. 이거 정말 골치아프다.
개발자의 능력중 중요한 요소 하나는 작업 속도이다.
이러한 작업속도를 결정짓는 요소중 하나가 바로 툴의 숙련도인데..
단축키가 너무 많이 바뀌어 버려서, 속도가 확 줄어버렸다.

나중에 시간나면, 바뀐 단축키나 정리해봐야겠다.

2. IB에서 Objects간의 간격이 안나오는 버그

IB로 작업을 하게 되면, Objects간의 간격을 알보는게 꽤 유용하다.
물런 덧셈, 뺄셈해서 작업을 해도 되지만, Objects간의 간격을 보면서 커서로 1px씩 이동을 하면 훨씬 쉽게 작업을 할 수 있다.
그런데.. Xcode4 IB에서는 이게 동작하지 않는다.
예전에 버그 레포팅을 했는데, 과거에 다른 사람이 이미 신고를 했다고 답장이 왔다.
근데 왜 아직까지 디버깅해서 릴리즈 안하는데? ㅡ,.ㅡ;

3. IB에서 Image Copy

Xcode3시절에는 IB에서 객체 복사를 하면, 해당 객체의 속성값들까지 그대로 복사가 되었다.
말 그대로 복사였다.
그런데 Xcode4에서는 Image값을 흘리고 복사가 된다.
예를들면, ImageView를 복사해서 붙여넣기를 해보면, Image(html로 예를들면 src안에 있는 이미지 경로라고 보면 된다.)는 복사가 안된다.
웃긴건.. 다른 속성들은 그대로 복사가 되는데, Image만 복사가 안되는 것이다.
Button도 Image가 복사가 안되긴 매한가지다.

이게 버그인지, 의도적인지는 모르겠다만..
이렇다 보니, 또 다른 속성을 흘릴고 복사가 될지 모르는 불안한 상황.
하…… ㅡ,.ㅡ
그리고 ImageView, Button 전부 하나하나 찍어서 Image값 넣어줘야 하는 불편함.
하…… ㅡ,.ㅡ(2)
(내용추가.어떨땐 Image까지 잘 복사되는걸 보아 버그가 맞는듯 하다.)

Apple 나의 기대를 져버리지 않는구나.

 

Apple 패라고 망치를 그린건 아니겠지..

 

 

mac에서 rails하는 사람들이 snow leopard 설치시 주의할 점

이 문제들을 해결하느라 하루를 허비했네요.

 
간단정리
  1. Install “Xcode.mpkg”(snow leopard)
  2. data backup
  3. install MySQL 64bit
  4. gem install mysql for 64bit
  5. port update
  6. other gems re-install
 
 
Install Snow Leopard
일반설치를 하시면 안됩니다. 꼭 “선택설치(Optional Installs)”를 클릭하신 후 “Xcode.mpkg”를 설치하셔야 합니다. 
“Xcode.mpkg” 클릭 후 설치과정에서 옵션들을 선택하는 페이지가 있는데 그대로 설치를 하시면 됩니다.


여담. 저는 Xcode.mpkg로 설치를 안했어서.. 이것 때문에 한참 고생했습니다.
 
MySQL
Snow Leopard가 되면서 64bit로 Upgrade를 해야됩니다. 즉 재설치를 해야 한다는 말인데, 이렇게 되면 기존의 data들이 뿅~* 하고 날라갑니다. 그러므로 필요한 data들은 backup을 하세요.
mysqldump -u username -ppassword database_name > dump.sql

모든 databases를 backup하시기 원하시면

mysqldump -u username -ppassword –all-databases > dump.sql 
 
자 이제 최신 버전(10.5)의 64bit MySQL을 다운받습니다. (10.5 MySQL받기)
다운받은 dmg를 mount 시켜보면 4개의 파일들이 있습니다.

ReadMe를 제외한 나머지 3개 모두 설치를 합니다.

 
설치 순서는
  1. mysql-5.1.38-osx10.5-x86_64.pkg (mysql입니다.)
  2. MySQLStartupItem.pkg (mac이 booting할때 mysqld를 자동 실행합니다.)
  3. MySQL.prefPane (시스템 환경설정에 MySQL panel을 추가합니다)
그 후 
sudo env ARCHFLAGS=”-arch x86_64″ gem install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config

하여 mysql gem을 설치합니다.

 
백업했던 데이터들을 복구합니다.
 
mysql -u username -ppassword database_name < dump.sql 


자. 그럼 console을 열어서 제대로 동작하는지 확인을 해봅니다.
그런데 만약 아래와 같은 Error Message가 나온다면
 
uninitialized constant MysqlCompat::MysqlRes
 
mysql  gem이 여러개 깔려 있어서 그런것입니다.
 
sudo gem uninstall mysql
 
깔려있는 mysql gem들을 삭제후 재설치를 합니다. (이 부분은 아무리 뒤져봐도 정보가 없어, 혼자 삽질하다가 알아냈습니다.)
 
sudo env ARCHFLAGS=”-arch x86_64″ gem install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config
 
MacPort
 
그 후 port를 upgrade해야 하는데.
 
sudo port selfupdate sudo port sync sudo port upgrade –force installed #아직 준비가 덜 된것들이 있어서 이 부분은 안하시는게 좋아요. 이것때문에 엄청 삽질했어요.

하시면 됩니다. 그런데 만약 아래와 같은 Error Message가 뜬다면

 
dlopen(/opt/local/share/macports/Tcl/pextlib1.0/Pextlib.dylib, 10): no suitable image found.

snow leopard용 port를 설치하신 후 upgrade하시면 됩니다. (snow leopard용 port 다운받기)
 
 
other gems
MySQL말고도 여러 gem들이 문제가 되고 있습니다. 이러한 gem들은 재설치를 해야 하는데, script를 이용하시거나, irb에서 명령어를 치셔서 하실 수 도 있습니다.
만약 gem들에서 문제가 발생하지 않는다면, 구지 재설치 하실 필요는 없습니다.
`gem list`.each_line {|line| `sudo env ARCHFLAGS=”-arch x86_64″ gem install #{line.split.first}`}
 
참고링크
ps. Mac에서 Safari로 글 썻더니.. 행간이 정리가 안되네요.
아 글이 무지 지저분해졌어 ㅠ,.ㅠ
 

SUBVERSION CLIENT FOR THE MAC

쓸만한 맥(Mac)용 서브버전(SUBVERSION) 어플리케이션이 나왔네요.
VERSIONS

윈도우용 서브버전 어플리케이션인 Tortoise같이 GUI에 익숙해지신 분이 맥에서 서브버전을 사용하시고 싶으실때 사용하시면 좋을것 같네요.

커밋(Commit)과 업데이트(Update)만 할 경우에는 특별히GUI툴이 필요 없겠지만
로그를 보거나, 과거 리비전(REVISION)의 파일내용을 확인하거나, 복구하는 등 간단하지 않은 작업을 할때는 아주 편하게 사용할 수 있다는 장점이 있습니다.

제가 자주 애용하는 웹SVN(SUBVERSION)인 Beanstalk(제 모든 개인프로젝트는 Beanstalk 사용)을 만든 wildbit의 작품입니다.
VERSIONS 로고를 본 순간부터 Beanstalk 짝퉁인가? 라고 생각했었답니다. 근데 같은 회사였네요. 멋진 디자인센스(Design Sense) 인것 같습니다. 😉