selectedBackgroundColor와 backgroundSelectedColor의 차이

selectedBackgroundColor 가 table row가 선택되었을 때 표시되는 색(아이폰 기본 파란색) (tableviewro의 속성)

backgroundSelectedColor는 안드로이드와 mobileweb에서만 적용되는 속성인데… view를 누르는 동안 표시되는 색, 아이폰에는 이런 속성은 없다.

테이블에서 selectedBackgroundColor를 변경할 일이 많은데 이 두 변수 이름이 비슷해서 주의필요!

Advertisements

ImageView에 overflow hidden 효과 주기 꼼수

오래전에 자세히 옮겨 놓으려고 임시글로 저장했다가 잊혀진 글인데 그냥 공개.ㅋ

http://developer.appcelerator.com/question/23931/imageview-scaling-mode

이미지를 싸는 View를 하나더 만들고 view의 borderRadius를 지정한다. 이건 일종의 꼼수다. (Android에서 잘 안됨ㅋ)


jscamp에서 twitter를 통해 들어온 Titanium 관련 질문들

jsCamp에서 twitter를 통한 질문에 대한 답변을 트위터라는 140글자로 적기엔 모자랄 것 같아 블로그에 정리해 봅니다. ^^

Q1. Titanium으로 안드로이드용 앱을 개발하려면 분기처리와 별도의 코드를 사용해야 하는 부분들이 상당히 많은 걸로 아는 … 이에 대해서 어떻게 생각하시나요? (from @wanyBae)

A1.  네트워크나 db등 시각적으로 보이지 않는 것과 관련된 API의 경우 거의 100%에 동일하며 시각적인 보이는 UI와 관련된 API의 경우 약 80%가 동일하다 보시면 됩니다. 구현하려는 UI방식에 따라 이 20%의 차이로 인해 많은 수고를 하거나 거의 수고를 안 할 수 있습니다. (위에서 100%와 80%라는 수치는 Appcelerator에서 말하는 수치입니다.)
또한 Titanium에서는 플랫폼별 리소스 관리가 편하게 되어있습니다.(wiki참조) 따라서 ui관련된 부분만 따로 분리하여 작성하는 것도 안드로이드와 아이폰 동시 개발의 수고를 더는 해결책 중의 하나일겁니다.

Q2. Titanium과  Phonegap을 비교했을 때 공수는 어느쪽이 더 적을거라 생각하시나요? (from @wanyBae)

A2. 둘의 성격은 달라서 개발하려는 상황에 따라 다르므로 어느쪽이 우세하다고 딱잘라 말하기는 어려운 것 같습니다. NativeUI의 형태를 띄는 앱을 개발하기에는 html+css3+js 등으로 네이티브 앱을 흉내내기보단 Titanium을 이용해서 Native UI로 구현하는게 성능면이나 개발 공수면에서 유리하다 생각합니다. 반면, 기존 모바일 웹페이지가 있고 이페이지를 랩핑해서 오프라인 기능을 추가하거나 카메라등을 이용하기 위함이라면 Phonegap을 이용하여 기존 개발된 모바일 페이지를 최대한 활용하는게 더 유리하다 생각됩니다.


맥에서 ThinkPad 키보드의 빨콩 사용하기

빨콩을 사랑한다.
생에 첫 노트북과 두번째 노트북 모두  IBM Thinkpad이다보니 빨콩은 내 손에 착 달라 붙어있다.(? ㅋ)
심지어 졸업하고 입사하자마자 오른팔을 기브스 할 때도 빨콩덕에 한손코딩이 가능했었다. -_-  (이때는 autohotkey를 이용해 키보드 반쪽으로 모든키 입력이 가능하게 하고 사용했다.)

어찌어찌 하다니 맥에서 개발할 일이 많아졌다. 처음 맥북을 접했을 때 터치패드 때문에 어깨 통증에 시달렸고 마우스를 쓰자니 마우스를 매일 가져다녀야 해서 싫었다.
회사에서 윈도우 환경을 맥으로 바꾸게 되면서 기존에 갖고 있던 빨콩을 계속 쓰고 싶었다.  (아 서론이 너무 기네..)

결론 : 드디어 맥에서 빨콩으로 스크롤 까지 하며서 완벽하게 사용할 방법을 찾았다!!!

controller mate 라는 어플을 사용하면 가능하다! 무료버전의 범위 내에서 빨콩 스크롤이 가능하다!
스케치 처럼 다이어그램을 이용한 프로그래밍이 필요하다.

참고링크

그리고 빨콩을 쓸때 마우스 커서를 민감하게 해서 빠른 속도로 움직이게 하는걸 좋아하는 분을 위한 작은 팁 하나 더!
환경설정 – 마우스 에서 속도를 최고로 해도 느리다고 느끼시는 분들은 터미널에 아래와 같이 입력하시고 재부팅 해보시면 더 빠르게 움직일 겁니다.
defaults write -g com.apple.mouse.scaling 6
뒤에 숫자가 커질수록 더 빨라 집니다. 현재 설정된 값을 확인할 때는
defaults read -g com.apple.mouse.scaling

참고 링크 : http://fplanque.com/info-tech/apple/make-your-mouse-faster-on-mac-os-x


Titanium Studio가 안켜질 때.

Titanium Studio를 실행시 위와 같이 나오면서 안켜지는 문제가 발생하기도 한다. 지금까지는 Titanium Studio를 다시 설치하거나 workspace를 새로 생성하여 해결 했다. 한번 집념(?)을 가지고 원인이 되는 파일을 찾아보니 .snap 파일이 문제였다.

숨겨져 있는 폴더인 YOUR_WORKSPACE/.meatadata/.plugins/org.eclipse.core.resources/ 에 있는 .snap 파일을 지우고 다시 실행해 보면 된다.


Appcelerator’s Marketplace에 거는 기대

appcelerator developer blog 캡쳐화면 (CCL 미적용)

며칠전 크로스 Appcelerator의 Developer Blog에 흥미로운 글 하나가 올라왔다. 글 내용은 다름이 아닌 Appcelerator에서 몇 주 후면  Marketpalce를 연다는 것이다. (원문링크) (*Appcelerator는  플랫폼 개발 프레임워크 중의 하나인 Titanium을 만드는 회사이다.)

Appclerator Marketplace가 무엇인가?
Titanium의 팬이자 한 명의 개발자로서 상당히 흥미로운 일이다. Marketplace는 개발자들이 자신이 만든 소프트웨어의 일부를 다른 개발자들에게 사고 파는 장터이기 때문이다. 애플 사용자들에게 앱 스토어가 있다면 Titanium 개발자들에겐 Marketplace가 있는 샘이다.  개인 개발자가 만든 하나의 앱을 앱스토어를 통해 판매자에게 팔 수 있었던 앱스토어 처럼, Titanium을 통해 개발하면서 자신이 만들었던 모듈, UI component, template 등등 소프프트웨어의 일부를 사고 팔 수 있는 곳이 곧 열릴 Appcelerator’s Marketplace이다.

과연 이 마켓 플레이스는 잘 될까?
기존에 소프트웨어 개발자들이 peer to peer로 소프트웨어의 일부를 파는 시장이 있었는지는 난 잘 모른다. 이 Marketplace가 성공 할까? 아님 실패 할까? 개인적으로 이 appcelerator의 marketplace가 잘 성장하길 기대한다.(그리고 바란다^^) 그 이유는 다음과 같다.

1. Appcelerator의 통제력 : 로그인 기반 Titanium Studio을 통해 정당하지 않은 사용을 통제한다.
Appcelerator는 Titanium 프레임워크 상에서 개발하는 개발자들에게  Titanium Studio는라는 강력한 툴을 Appcelerator가 aptana를 인수하고 몇달 후에 공개한 바있다. 이 Studio는 총 두가지 버전이 존재한다. basic과 premium. 이 두 버전은 다른 소프트웨어가 아니다 동일한 설치파일로 소프트웨어를 설치하고 프로그램 사용시 로그인 되는 방식으로 유료회원일 경우 디버깅과 같은 프리미엄 기능을 제공한다. 만약 인터넷이 되지 않는 곳에서 Studio를 실행하면 무조건 basic 기능으로 동작한다. 일반적으로 볼 수 있는 서로 다른 설치 파일 형태가 아닌 로그인을 통해 보다 확실하게 사용자들을 구분하고  통제한다. 이런 식의 통제는 marketplace에서도 존재하리라 생각된다. 내가 구매하지 않은 marketplace의 모듈을 사용하려 한다면  studio 차원에서  하지 못하게 막을 것이라 예상 된다.(개인적인 예상이다.^^)

2. 앱은 실패했지만 앱을 개발하면서 만든 모듈은 성공 할 수 있다?
예를 들어 한 개인 개발자가 얼굴 인식하는 게임을 만들었다고 하자. 이 때 얼굴 인식하는 기능은 직접 모듈을 개발해서 구현했다. 하지만 그 게임은 사용자들의 사랑을 받지 못하고 조용히 사라졌다. 한마디로 앱은 실패한 샘이다. 하지만 그가 개발한 얼굴인식 모듈을 titanium에서 얼굴인식 기능을 사용하려는 개발자들에게 marketplace를 통해 팔수있다. 개발자에게는 분명 또 다른 시장이라고 생각한다. 앱은 단순히 개발력만을 가지고 성공할 수 있는 곳이 아니다. 하지만 marketplace는 좀 더 기술적인 개발력만으로도 해볼 만한 시장이라 생각된다.

3. 더욱더 빠른 개발 가능
Titanium의 장점 중에 하나는 빠른 개발이다. 이제 조금(?)의 돈만 더  더 지불한다면 그냥 Titanium을 쓸때 보다 조금 더 빠른 개발을 할 수 있어 지는 거다. marketplace에서 실제로 어떤 가격에 거래 될지는 알수 없지만 뭐 appstore와 비슷하지 않을까?^^ 0.99불에 커스터마이징 된 Tab 컴포넌트를 살 수 있고 4.99불에 얼굴인식 모듈을 살 수 있고 ^^. 블로그 글에 보니 trial도 제공 할 수 있단다. 써보고 살 수 있으면 얼마나 좋은가?

Marketplace 반갑습니다.
Appstore가 백화점이라면 appcelerator’s marketplace는 뭐 원단 시장 같은게 아닐까? 옷을 만들만한 감각은 없지만 신소재 원단 만큼은 끝내주게 만들 수 있는 장인이라면 marketplace가 상당히 반가울 것이다. 반대로 원단은 못 만들지만 디자인은 끝내주게 할 수 있는 디자이너도  끝내주는 최신 유행 원단을 사서 유행의 변화에 대응하는 웃을 만수 있을테고, 그 옷을 백화점 가서 팔 수 있을 것이다. 그렇다면 marketplace의 등장은 디자이너들에게도 반길일이 아닐까?


Titanium에서 xhr에 HTTP Basic Authentication 사용하기

Titanium에서 createHTTPClient를 이용할 때 HTTP Authentication 사용하려면 아래와 같이 하면 된다.

var xhr = Titanium.Network.createHTTPClient();
xhr.setTimeout(20000);
xhr.onload = function()
{
Ti.API.info(this.responseText);
};
// open the client
xhr.open('GET','http://your.destination.url');

authstr = 'Basic ' +Ti.Utils.base64encode("yourUserName"+':'+"yourPassword");
xhr.setRequestHeader('Authorization', authstr);
xhr.send();

참고 URL : http://developer.appcelerator.com/question/20951/how-to-do-a-http-put-with-http-basic-authentication