2주 전쯤 미국 아마존에서 트랙볼 마우스를 구입해서 받았습니다.


아마존 로고가 새겨진 테이프로 포장이 되어있네요. 국내 배송을 위해 국제 송장 위에 국내 업체의 송장이 추가적으로 붙어있습니다.


내용물은 에어백으로 감싸져있는데 빈 공간만 넣은거라 충격 보호는 그닥일 듯 합니다 ㅎㅎ


제품 박스


내용물은 제품, 기능 설명서, 소프트웨어 안내서, 다국어 메뉴얼(트랙볼 아래 깔려있네요)이 전부입니다.


단독 샷. 크기 짐작이 잘 안되시죠?


기존에 사용하던 MS 마우스입니다. 트랙볼이 거의 마우스만 하네요 ㅎ


버튼은 볼을 중심으로 4개가 있으며 기본적으로 소프트웨어를 설치하지 않아도 좌, 우 버튼과 스크롤 휠(볼을 수평 상태로 시계, 반시계 방향으로 돌리면 됩니다.)은 정상적으로 작동합니다.


위쪽 두개의 버튼에 기능을 부여하려면 http://www.kensington.com/ 홈페이지에서 소프트웨어를 내려받아 설치해야 합니다.


이제 3~4일 정도 사용했는데 일반적인 사용엔 거의 적응 했습니다. 다만 미세한 컨트롤은 아직 힘드네요. 목표 좌표 근처에서 약간 왔다갔다 하는정도?


마우스 사용이 많은 게임은 조금 무리가 있어보이며, 하스스톤류의 카드게임은 플레이 하는 데 전혀 지장이 없습니다. ^^

'Story' 카테고리의 다른 글

stackoverflow의 한국판, codeflow  (0) 2015.06.21
컴퓨터 부품..  (0) 2014.04.13
amazon에서 물품 구입기  (0) 2014.02.14
Xcode의 단축키  (1) 2014.01.13
라즈베리파이에 transmission 설치기  (0) 2013.10.09

회사에서 사용하는 iMac 의 사양은 3.06 Ghz Intel Core 2 Duo, 8GB, 500GB 입니다.


Xcode를 사용하면서 빌드 - 시뮬레이터 실행 의 속도가 생각보다 많이 답답한 경우가 많습니다.


예를들면 소스를 수정하지 않고 앱 종료 - 재실행의 경우 어떤 때에는 몇 초만에 재 실행이 이루어질 때가 있고.


느릴 땐 10초 이상 걸리는 경우가 있습니다.


왜 그런지도 모르기 때문에 더 답답하죠.



웹 서핑을 하다가 램디스크를 이용한 속도 향상 방법이 있어서 따라 해 보았습니다.


해당 글을 http://blog.shpakovski.com/2014/02/how-to-reduce-xcode-and-appcode.html 입니다. 해보실분은 이곳을 참조해서 따라 해 보세요. ^^


1. DerivedData 폴더를 램디스크를 하드링크 걸어서 사용할꺼라 이 폴더의 내용을 싹 비워줍니다. 안해도 되는데 램디스크가 연결되면 어차피 폴더 내의 기존 파일은 사용이 불가능합니다.


2. 위 링크 글에서 소개하는 램디스크 생성 스크립트를 실행합니다. 저같은 경우에는 처리가 안되길래 권한을 775로 바꿨더니 실행이 되었습니다.


3. 램디스크 설치중엔 Mac이 잠시 먹통이 되었는데 몇 분 후 괜찮아졌습니다. (대략 3~4분정도 버벅임.)


4. 기존 DerivedData 폴더가 어디로갔는지 찾아볼 수 없고 Xcode에서 해당 폴더를 열면 열리긴 합니다.

  (제가 Unix 계열 OS를 잘 다루는 편이 아니라 제가 못찾은것 일 수도 있습니다 ^^; )


5. Xcode 에서 기존 프로젝트 빌드 타임 비교.


기존 HDD 만 사용하는 경우 : 35초



램디스크 설치 후 : 51초.. 응??



뭔가 이상합니다. 왜 램디스크를 사용했는데 빌드 시간이 더 오래걸린걸까요?



딱히 설정이나 최적화가 필요 없는것 같은데 말이죠 ㅡ_ㅡ;;


이번 테스트는 실패. 램디스크 해제하고 재부팅하니 이전 상태로 돌아왔습니다.



다음엔 Xcode에 맞게 최적화 해주는 스크립트 말고 그냥 램디스크만 설치하고 DerivedData를 직접 지정해서 테스트를 해봐야 할 것 같습니다.

아래 매크로는 http://dadabeatnik.wordpress.com/2013/09/12/xcode-and-asynchronous-unit-testing/ 에서 찾은 내용입니다.


// Macro - Set the flag for block completion

#define StartBlock() __block BOOL waitingForBlock = YES


// Macro - Set the flag to stop the loop

#define EndBlock() waitingForBlock = NO


// Macro - Wait and loop until flag is set

#define WaitUntilBlockCompletes() WaitWhile(waitingForBlock)


// Macro - Wait for condition to be NO/false in blocks and asynchronous calls

// Each test should have its own instance of a BOOL condition because of non-thread safe operations

#define WaitWhile(condition) \

do { \

while(condition) { \

[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; \

} \

} while(0)




사용 예제


페이스북의 문자로 된 ID를 숫자 형태의 ID로 바꿀 때 사용하는 facebook의 graph api 조회를 예로 들어보겠습니다.


비동기로 수행되는 로직이 있는경우 해당 로직이 끝나기 전에 테스트 케이스가 끝나버리기 때문에 위의 매크로를 이용해서 비동기 처리가 끝날 때 까지 테스트 케이스가 종료되지 않도록 기다립니다.


주의할 점은 비동기 로직이 실패했을 때에도 EndBlock();을 호출 해 주어야 정상적으로 종료 됩니다.


- (void)testFacebookURL {

NSString *urlString = @"https://graph.facebook.com/사용자 또는 페이지 아이디";

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer = [AFJSONResponseSerializer serializer];


StartBlock();

[manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSLog(@"response : %@", responseObject);

NSLog(@"id : %@", responseObject[@"id"]);


EndBlock();


} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"Error : %@", error);

EndBlock();

}];

WaitUntilBlockCompletes();

}


몇일 전 Amazon 에서 켄싱턴 슬림 블레이드 트랙볼 마우스를 구입을 했습니다.


한국으로 배송이 안되면 구매할 생각이 없었는데, 되더라구요.. ^^;


결제 1~2일 후 i-parcel 이라는 곳에서 Amazon.com order of "Kensington Slimblade Trackball.... 로 시작하는 메일이 옵니다.


아마존에서 직접 배송하는게 아닐테니 배송 회사인가보다 생각하고 아마존에서 저 회사로 넘겼나보다 하고 지나갔죠.


그런데 생각해보니 굳이 메일을 보낼 필요가 있나? 하고 다시 메일을 자세히 들여다 봤습니다.


메일 내용은..

2010년 2월부터 한국 내 세관 규정이 변경되어, 물품 통관 진행을 위하여 주민번호를 요청드립니다.

고객님의 주민번호는 물품 통관을 위해서만 사용될 예정이며, 기입 시 별도의 비용은 발생하지 않습니다.

고객님의 물건을 미국에서 한국으로 발송 후 그 물품에 대한 통관 진행을 위해 주민번호 기재를 부탁드립니다. 여기를 클릭해주세요.


주민번호가 기입 전에는 고객님의 물품이 미국에서 발송하지 못함을 공지드립니다.


주민번호 요청에 대한 문의는 한국 내 배송 협력사인 CJ GLS로 연락부탁드립니다.


이렇게 왔더군요.. 내용 자세히 안보고 지워버렸으면 물건은 한국으로 출발도 못하고 아마존으로 돌아갈 뻔 했습니다.


영문으로 된 내용중에 링크가 있는데 이 링크를 타고 들어가면 주민번호를 입력받게 되어있습니다.


처음엔 폰으로 열어서 했는데 처리가 안되었더라구요. 나중에 PC로 다시 들어가서 주민번호를 입력해주니 제대로 처리가 되었습니다.


2/20 수정.

통관을 위한 개인정보를 입력하고 6일 후 메일을 받고 트래킹 정보를 확인해보니 물건이 한국에 도학했네요.

아마 빠르면 오늘쯤 국내 배송업체에 넘겨지고 내일? 늦어도 모레쯤엔 받을 수 있을 것 같습니다.


물건을 구입할 땐 예상 배송일이 9~10일이었는데 통관 정보 입력등의 문제로 조금은 더 길어지는 것 같군요.

다음번에 아마존을 다시 이용한다면 조금 더 들여서 빨리 받아보는게 좋을 것 같습니다.


국내 쇼핑몰 1~2일이면 받아보는거에 익숙해서 10일 기다리는건 할 짓이 못되는것 같습니다 ㅠ_ㅠ



2/21 물품 도착 ^^


i-parcel 홈페이지에는 국내 배송업체의 데이터를 다시 조회해서 업데이트 하다보니 물품이 배송되고 1~2일정도 있다가 배송 완료 상태로 전환이 되네요.

'Story' 카테고리의 다른 글

컴퓨터 부품..  (0) 2014.04.13
켄싱턴 슬림 블레이드 트랙볼 마우스 개봉기  (3) 2014.02.24
Xcode의 단축키  (1) 2014.01.13
라즈베리파이에 transmission 설치기  (0) 2013.10.09
ipTime Extender 2 설치  (0) 2013.09.30

국내 3대 모바일 메신저 카카오톡, 네이버 라인, 다음 마이피플.


카카오톡이야 워낙 연동되는 앱들이 많아 URL Scheme를 쉽고 빠르게 사용할 수 있도록 개발자 페이지가 존재합니다.

마이피플도 마찬가지고 메인 소개 페이지 하단에 Open API 링크가 존재합니다.


그러나 라인의 경우 소개 페이지를 아무리 뒤져봐도 Open API 안내 페이지를 찾을 수가 없었습니다.

결국 구글링을 통해 찾긴 했는데... http://blog.naver.com/PostView.nhn?blogId=apocalypsegm&logNo=130171221611&redirect=Dlog&widgetTypeCall=true


이분도 일본 웹사이트에서 찾았다고.. ㅡ_ㅡㅋ


아무리 일본 법인을 통해 출시된 앱이라고 해도 개발자 지원 페이지조차 없다는건 좀 납득이 안가네요..


아래는 Open API를 다운 페이지들 입니다. 개발할 때 참고하세요~ ^^



국내 메신저 open API


Kakao Link API

http://kakao.com/services/api/kakao_link


My People

http://blog.daum.net/my.people/46


Naver Line

http://blog.naver.com/PostView.nhn?blogId=apocalypsegm&logNo=130171221611&redirect=Dlog&widgetTypeCall=true



해외 메신저 open API


What's App

http://www.whatsapp.com/faq/en/iphone/23559013



Mac과 Xcode를 사용하기 시작 한 게 2009년.


그동안 사용했던 개발툴 & 텍스트 에디터로는 Eclipse, Edit Plus, Xcode중에,

이상하게 단축키를 많이 쓰지 않은 IDE가 Xcode입니다.


자주 사용하는 기능 중 Edit All in Scope 기능 (Eclipse의 Alt + Shift + R : 변수명 일괄 변경) 인데

그동안 단축키를 찾아볼 생각은 못하고 마우스 클릭, 잠시 기다림, 오른쪽에 뜨는 메뉴 클릭 2단계를 거쳐 이 기능을 사용했었는데 오늘 생각난김에 찾아보니 Control + Command + E 라는 단축키가 있었네요.




단축키 하나로 생산성이 얼마나 올라갈 진 모르겠지만, 단축키 사용이 하나 둘 늘어나면 그 차이가 점점 커지겠죠?


자주 쓰는 단축키를 나열해 보자면..

실행, 테스트, 빌드, 클린,

Menu - View - StandardEditor, AssistantEditor, Navigator 의 하위 메뉴들.

디버그 창 열고닫기, 새 탭, 이전/다음 탭, 라인 올리기/내리기, h/m 파일간 전환, Utility창 열기/닫기

Commit, Pull...


막상 기억나는걸 적어보자니 기억이 잘 안나네요~


아마도 머리보다는 손가락이 더 잘 기억하고 있어서가 아닐까 합니다. ^^;


이 글을 쓰다보니 오래 전 컴퓨터 학원에서 아래한글 1.5를 배우던 시절이 생각나네요. 그땐 마우스가 있었는지 기억도 잘 안나지만 그 뒤로도 마우스 쓰지 않고 거의 모든 기능들을 단축키로만 해결 하던 때가 있었죠.


앞으로는 여유있을 때 어떠한 단축기들이 있는지 확인해보고 유용한 단축키는 외워서 써봐야겠습니다.

Xcode 5로 업그레이드 한 이후 SVN에 프로젝트를 Import 하는 메뉴가 사라져서 한참을 찾았는데 결국 Xcode 상에서는 할 수 있는 방법이 없는것 같습니다.


우선은 급한대로 터미널을 이용해야 할 것 같군요.


svn import -m "Import Message"  LOCAL_PROJECT_DIRECTORY svn://서버주소/REPOSITORY_NAME


import 하고 터미널이나 Xcode를 이용하여 Checkout 해서 사용하면 됩니다 ^^

iOS7 에서 새로 생긴 기능 중 하나, 안드로이드처럼 앱 별로 셀룰러 데이터 사용량을 파악 할 수 있다는 점 입니다.


또한 개별 앱 마다 셀룰러 사용을 불허하도록 설정을 바꿀 수 있어 무의식적으로 LTE 상태에서 데이터를 급격하게 소모하는것을 방지할 수 있습니다.


예를 들면 유투브같은 동영상 시청 앱들의 셀룰러 데이터 사용을 방지함으로써 데이터가 넉넉하지 않은 요금제 사용자에게 도움이 될 수 있습니다.


셀룰러 데이터 사용량을 확인하는 방법.

설정 - 셀룰러 메뉴에 들어갑니다.


아래로 내려보면 앱 목록이 뜨면서 셀룰러 데이터 사용량이 함께 표시됩니다.

Wifi 상에서의 데이터 사용량은 제외된, 순수 셀룰러(LTE, 3G) 데이터 사용량입니다


저 같은 경우엔 사파리를 통해 데이터를 가장 많이 사용했는데요. 테스트로 한번 꺼봤습니다.


사파리의 셀룰러 데이터 사용을 금지한 후 웹 서핑을 하려고 시도하니 위와같은 메세지가 뜨면서 진행이 되지 않습니다.

설정을 누르면 셀룰러 데이터 관리 화면으로 돌아가게 됩니다.


데이터가 적은 요금제를 쓸 때, 유투브같이 데이터를 많이 쓰는 앱들을 무의식적으로 사용하는것을 방지하기 위해 셋팅해두면 좋을 것 같습니다. ^^

iOS 7 AutoLayout 과 topLayoutGuide 를 이용한 화면 맞추기 에서 했던 방법은


스토리보드를 사용 시 적용할 수 있는 방법이고 XIB 위주로 만들어진 레이아웃에서 iOS6 이하와, 7 모두 잘 맞게 맞추는 방법을 알아보겠습니다.




기존 6.0 미만을 지원하는 프로젝트인 경우 Xib의 우측 유틸리티 섹션에 첫번째 탭인 File inspector 에 보면 Use Autolayout 항목이 체크 해제되어있을 것입니다.


보통 이 상태로 iOS7 에서 실행해보면 아래와같이 상태바 영역까지 콘텐츠가 밀려 올라와있는것을 볼 수 있습니다.


일단 iOS7 에서 잘 보일 수 있도록 ViewController.view의 sub view 들을 모두 선택하여 20포인트 아래로 끌어줍니다.


메인 뷰의 자식뷰들을 모두 선택


객체들을 상태바 아래로 이동


일단 에디터 창에서 상태바 아래로 모두 내렸으면 하위뷰들을 모두 선택한 상태에서 오른쪽 Size inspector 를 선택합니다.


그리고 아래와 같이 iOS6 / 7 Deltas 라고 되어있는곳의 Delta Y 항목을 -20을 셋팅합니다.


그리고 iOS6으로 실행!


짜잔~ 잘 나왔죠? (Text Field 문자열 짤린건 패스.. ㅋㅋ)



xib에서 배치된 객체들은 이렇게 한번에 처리가 됩니다.


다만 뷰가 로드된 이후 프로그램 로직에 의해 재 배치 되는 경우는 iOS 버전에 따라 위치를 보정해줘야 합니다.


자~ 이제 모두모두 즐거운 iOS7 호환성 작업을 시작해 봅시다!


라즈베리파이를 구매한지 꽤 오랜시간이 지난듯 합니다.


그나마 몇 달 전 Light httpd 설치하고 간단한 파일만 게시하도록 만들어놓고.


오늘은 안쓰는 외장 하드를 달아서 토렌트 다운로드 머신으로 셋팅하는것을 목표로 진행.



1. 일단 사용하지 않는 32기가짜리 SSD를 라즈베리파이에 연결해봤습니다.


but, 파티션 인식이 안되는군요.


다른 외장하드를 연결했으나, 똑같이 인식이 안됩니다.


검색 결과, 2.5" 라도 외부 전원이 필요한것으로 판단. 근데 외부 전원 연결 가능한 케이블이 회사에 있... ㅠ_ㅠ


외장하드는 일단 보류하고 안쓰는 8기가짜리 USB 메모리를 꽂아서 파티션을 잡고 마운트시켰습니다.



2. transmission 을 설치하고 미드 토렌트파일을 받아서 업로드.


권한 때문에 다운로드 안됨. 검색 결과.. 해당 폴더의 소유주를 바꿔라!


이것저것 찾아보니 transmission의 유저 아이디가 답변에 나온 유저 아이디와 같음.


일단 폴더 소유권을 넘깁니다. (쓰기 권한을 줘도 되긴 하지만 리눅스에 익숙하지 않아 그냥 확실한 방법으로 처리함)


일단 다운로드는 잘 되고있는데, 데스크탑으로 받을 때와는 엄청나게 느린 속도를 보여주는군요.


토렌트 2개를 동시에 받고있긴 했지만 빨라야 2MB/s 정도..


게다가 라즈베리파이의 CPU를 45%정도 사용하고있었습니다.



결론. 이거 토렌트 머신으로 사용해도 될런지 살짝 고민이 됩니다.. ㅋ

+ Recent posts