달력

32024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

새로 들어간 회사에서 iOS 까지 겸임하게 되었습니다.

이미 있는 앱을 다국어화 하는 작업을 하고 있는데

제가 아는 방법으로 암만 해도 안 되는 겁니다.

(방법은 다른 블로그에 검색하면 많이 나와 있습니다.)



그래서 며칠을 삽질한 결과를 여러분께 공유합니다.


1. Localization Strings 파일이 빌드에 제대로 적용이 되지 않을 경우.

그냥 Clean - Build 하시면 됩니다.

근데 이래도 안되면 시뮬레이터나 단말기에 있는 앱을 지웠다가 다시 깔아 보세요.


2. xib, nib, stroyboard 파일이 빌드에 제대로 적용이 되지 않을 경우.

그림1) File Inspector

해당 파일을 선택하면 오른쪽의 File Inspector에 나오는 녀석들입니다.

이게 없다면

그림2) 해당 파일을 오른쪽 클릭하면 나오는 메뉴

요걸 눌러 주시면 되겠습니다. (오른쪽 클릭 하면 나옵니다.)


암튼 그림 1에서 Default 라고 되어 있는 드롭다운 박스가 Nothing이외의 다른 걸로 되어 있다면

다국어 한 파일들을 일일이 다 확인해서 Nothing으로 바꾸어 줍니다.

(xcode 4.3에서는 Nothing으로 안 되어 있으면 기본언어 외의 언어는 넣을 수가 없었던것 같은데,

xcode 4.6은 뭔가 좀 다른가 봅니다 ㅠㅠ)


그 이후 Clean - Build 하시면 됩니다.



3. 언어 리소스 폴더를 프로젝트 설정에서 제거했다가 나중에 다시 추가할때

(중요!! 한번 추가한 언어는 왠만하면 빼지 마세요 ㅠㅠ 특히 svn 연결이라도 해놓은 경우에는 여기저기 다 꼬이고 난리납니다. 해결은 가능하지만 엄청나게 귀찮습니다.)

svn 'xxxxx' is already under a version control 이나 그 외의 svn관련 에러가 뜨면서 추가가 안 될때.


해당 언어의 폴더만 있고 안의 파일이 없거나 있어도 다국어화가 안된 경우에는

우선 터미널을 켜서 해당 프로젝트의 폴더에 갑니다.

그리고

rm -rf xx.lproj

svn delete --force xx.lproj

mkdir xx.lproj (이걸 안 해주면 나중에 xcode에서 다시 언어를 추가할때 에러가 납니다. 지랄맞은 xcode 같으니)


이미 다국어화가 되어 있는 폴더인 경우에는.....

안의 파일들을 백업했다가

위의 동작들을 수행한 후

해당 폴더에 다국어 연결을 다 마친 다음에(중요)

백업해두었던 파일을 붙여넣기 해 줍니다.



아이폰은 다국어화가 진짜 겁나 드럽게 짜증납니다.

나름 편하게 만들어 놓았다고 한것 같은데 오히려 저장소 꼬이고 프로젝트 설정 꼬이고 하다 보면

프로젝트를 다시 만들어야 하는 상황도 생길 수가 있습니다.

Posted by 낭만폭풍
|
php관련 첫 포스팅입니다.
제가 전문 웹개발자가 아니라서 정확하지 않은 내용이 많을 수 있습니다만
구현해보지 않은건 올리지 않겠습니다.

개발환경은
이클립스 3.6 헬리오스에 PHPEclipse 플러그인을 사용합니다.
OS는 Mac OS X 10.7.3 입니다.




자바에는 final 이라는 상수를 정의하는 접근자가 있습니다.
php도 프로그래밍 언어기 때문에 상수를 정의할 수 있는데,
방법은 다음과 같습니다.

define('key', 'value');

c/c++에 이런 함수가 있었던것 같은데.... 기억이 가물가물...
해서, 자바에 대응해본다면

final Object key = 'value';

같은 개념입니다. 물론 php는 스크립트 언어기 때문에 저 string을
객체 개념으로 봐야할지는 좀 애매하지만요.

이렇게 define된 값들은 해당 페이지 및 include된 페이지,
해당 페이지를 include한 페이지에서 참조할 수 있게 됩니다.

echo key;

상수는 이런식으로 $ 없이 사용할 수 있습니다.
그리고 상수인 만큼 한번 정의하면 다시 define하더라도 바뀌지 않습니다. 
Posted by 낭만폭풍
|
안드로이드 폰 써보시는분들 아시겠지만
요즘 어플들 써보시면 대부분 "보내기" 기능같은거 다 있죠?

이게 구현되는 원리는,
어플리케이션은 시스템에 설치되면 manifest파일이 분석되어
각 activity들의 Intent-fileter에 선언된 action들이 시스템에 등록됩니다.

그래서 특정 어플리케이션에서 암시적 인텐트를 호출하게 되면
상기의 내용들을 가지고
전달된 uri의 내용에 따라 어떤 앱을 띄워줄지 시스템에서 결정하게 됩니다.

아래는 인터넷을 띄우는 인텐트나 사용자가 뭔가 링크를 클릭했을 때 반응하게 하는 IntentFilter의 선언 예입니다.

 

쉽죠? http 를 예로 드니까 뭔지 한번에 딱 알것같죠?
하지만 이게 끝이 아닙니다. 

scheme://host:port/path

어디서 많이 보던 형식같지 않나요? 네 인터넷에서 많이 쓰는 url 형식입니다.
안드로이드도 사용자에겐 보이지 않지만 내부적으로 이런 나름의 프로토콜을 가지고 있답니다.

만약 제가 웹페이지를 하나 만들어서, kkkk://simsim:1111/hae 라는 링크를 걸어 두고.
제 액티비티에  

<intent-filter>
<category android:name="android.intent.category.BROWSABLE />
<category android:name="android.intent.category.VIEW />
<category android:name="android.intent.category.DEFAULT />
<data android:scheme="kkkk" android:host="simsim"/>
</intent-filter>

/**
* DEFAULT는 인텐트필터를 쓰겠다면 꼭! 선언해 주셔야 합니다. 안그럼 안뜹니다.
**/

이라고 선언해 두면, 웹페이지에서 제 어플이 호출되는 마법같은 일(?)이 일어납니다! 
물론 uri가 통채로 날아오며, 이걸 해당 액티비티에서 getIntent().getData() 해서
리턴된 Uri를 맘대로 갖고 노시면 됩니다.

인텐트필터는 이 밖에도 mimeType, pathPrefix, pathPattern 등의 기능이 있는데,
제가 아직 잘 모르는 사항이라 다음에 포스팅 하도록 하겠습니다.


감사합니다. 
Posted by 낭만폭풍
|

연속된 ndk-build 세팅 삽질의 끝에 결국 성공했습니다.
알고나니 별거 없었지만 그래도 공유합니다.


환경 -
Mac OS X Lion 10.7.3
Eclipse Java EE IDE for Web Developers: Helios Service Release 2 
X-Code 4.3



1. X-Code 설치
지금 나오는 버전에는 X-Code에 기본적으로 gcc, make가 안깔려 있습니다.
(4.2 이전버전이 이미 설치되어 사용하시는 분은 건너 뛰셔도 좋습니다.) 
일단 X-Code를 깔고 업데이트를 모두 다 한 뒤에 Preference - Download 로 들어갑니다.


이런게 나옵니다.
저는 이미 설치했으므로 Update가 뜨지만 여러분은 Install이 뜰겁니다. 눌러서 설치합니다.
(기본적으로 애플 개발자 계정이 필요하지만, 없어도 다운받는 방법이 있긴 합니다. 구글링....)

2. 이클립스 설치
다른 포스트에는 이클립스 C/C++버전을 받고 MinGW를 받으라고 하는데
그런거 필요 없습니다.
이클립스에서 Install new Software 들어가셔서 Hellios 선택하시면 C/C++ Develper Tools 가 있습니다. 깝니다.
(CDT 아닙니다. CDT 받으시면 컴파일러랑 Make랑 다 잡아줘야 됩니다. 귀찮습니다.)
 

3. 이제 개발을 시작합니다.
제가 깐건 컴파일이고 뭐고 다 환경변수 참조해서 알아서 잡아 줍니다. 편합니다.
안드로이드처럼 그냥 코딩해서 실행 누르면 콘솔창에 팍팍 뜹니다. 재미납니다.


아무쪼록 많은 도움이 되었으면 좋겠습니다.
즐개발 하세요. 

'개발 > iOS' 카테고리의 다른 글

iOS 지역화 삽질 후기  (0) 2013.06.24
Mac OS X Lion 에서 PATH 환경변수 설정하기  (1) 2012.03.08
Posted by 낭만폭풍
|
* Mac OS X 관련 포스트는 라이언 10.7.3버전을 기준으로 합니다. 2012년 3월 8일 기준.

윈도우에는 시스템 설정에 환경변수라는 매우 편리하면서 귀찮은 기능이 있는데,
맥에서도 물론 이런게 있습니다. 윈도우처럼 설정 어디 있는건 아니고
시스템 파일을 편집해야 되는데, 방법은 아래와 같습니다.

1. 터미널을 엽니다.

chan-u-bag-ui-iMac:~ username$

이렇게 나옵니다. 이렇게 안나오시는 분은 물결무늬 나올때까지 cd .. 해주세요.
참고로 이 경로는 finder열어서 username누르면 나오는 그 경로입니다. (/Users/username/)

2. 파일 목록을 확인합니다.

ls -a 하시면 

.bash_profile 또는 .profile 이라는 파일이 있을겁니다. 기본적으로는 숨김파일입니다.
(라이언에서는 두번째께 뜰겁니다.)

이걸 open -e .profile 해서 편집 모드로 엽니다.
열어보면

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

이런 비슷한게 있을겁니다.
저는 macports를 설치한 상태여서 저 경로들이 뜨고, 여러분은 아마 아무것도 없을 겁니다. 그냥 붙여넣어 주시면 됩니다.

중간에 콜론은 각 경로의 구분자입니다.

export PATH=/opt/local/bin:/opt/local/sbin:/Users/username/Documents/dev/tools/android-ndk-r7b:/Users/username/Documents/dev/tools/android-sdk-macosx/platform-tools:$PATH

대충 이런식으로 쭉 연결해서 써넣고 저장 하시면 됩니다.

테스트를 위해서 명령어를 쳐봅니다.

which adb
which ndk-build

경로가 뜬다면 성공입니다. 
이로써 ndk-build, adb 명령어 등의 프로그램 실행을 위해 경로를 찾아 들어가야하는 수고를 덜었습니다. 

'개발 > iOS' 카테고리의 다른 글

iOS 지역화 삽질 후기  (0) 2013.06.24
Mac OS X Lion 에서 eclipse 를 활용한 C/C++ 개발환경 세팅  (0) 2012.03.08
Posted by 낭만폭풍
|
개발하시는분들 고민이 많은게
자기가 뭔가 개발해서 올리긴 했는데

사용자들은 자꾸 에러가 난다고 하는데... 귀찮다고 에러 보고도 안하고
안드로이드 같은 경우에는 보고를 받더라도
어느 단말기, 어느 버전에서 에러가 났는지의 정보가 부족한게 사실입니다

어쩌라고.. 우리 폰에선 안뜨는데


그래서 저는....
서버 한대를 두고 에러가 날때마다
Throwable 객체를 들고와서 요리조리 해서
단말기 정보, 버전 등 여러가지 정보를 넣고 서버로 Post합니다.

사실 이런 작업 하는거 저밖에 없는것도 아니고 인터넷에 찾아보면
방법도 많습니다만, 이런 방법도 있구나 하고 알아 가셨음 합니다. 의외로 편합니다.

대충 방법은 이렇습니다.

1. 에러가 발생합니다. try - catch로 감싸놓았다면 Throwable 객체가 들어옵니다.
(보통 catch문에 자동생성되는 Exception이 얘를 상속받은 클래스입니다,) 

2. StringWriter를 하나 생성하고 이걸로 PrintWriter을 생성합니다.

3. Throwable.printStackTrace(PrintWriter) 합니다. 이렇게 하면 PrintWriter 안에 있는 StringWriter에 에러 로그가 들어옵니다.

3. StringWriter를 toString() 해서 맘대로 갖고 노시면 됩니다.

대충 소스는 이렇습니다.
 

아무쪼록 많은 도움이 되었으면 좋겠습니다. 
Posted by 낭만폭풍
|
앱 내부 결제 모듈같은거 구현할때
휴대폰 인증을 위해 단말기의 통신사를 알아야 할 필요가 있습니다.

 
그럴땐 이걸 쓰면 됩니다.
아래는 구현 예제입니다.
 
반환하는 값은 아래와 같습니다.

SK 텔레콤 : SKTelecom
LG U+ : LG U+ 

KT 등 다른 통신사는 주위에 단말기가 없어서.....
(아시다시피 죄다 아이폰 ㅠㅠ)

아시는분 제보 부탁드리겠습니다(__) 

KT : olleh

Posted by 낭만폭풍
|


네. 저도 소셜네트워크 합니다.
국내 서비스는 마음에 안들고 페북 트윗만 합니다.

2012년 1월 10일자 트위터 현황. 트윗 수만 늘고 별 바뀐건 없습니다.
 
주변 사람들은 보통 페북만 하는데 저는
기획에 대한 아이디어를 얻는 차원에서 비교적 사람들의 표현이 자유로운
(라고 쓰고 뻘소리할 공간이라고 읽는다.)
트위터도 같이 합니다. 네.

트위터에 보면 xxxx_bot 이라고 해서, 일정 간격으로 정해진 멘트를 날리는
'봇' 계정이 있는데요.
뭐 지름신봇 안생겨요봇 등등 있고
최근에는 기업체들도 자체적으로 봇을 만들어서 상품이니 서비스니
광고를 열심히 하더라구요. 저도 정보획득 차원에서
뽐뿌봇이나 안드로이드펍봇 kbs뉴스봇 등등 팔로우 하고 있습니다.

오늘은 참 이상한 봇을 발견했습니다.
바로 [ 솔로를 위한 쓴소리 봇 ] 인데요.
이름부터가 좀 이상하지 않나요?

 

계정이 두개인 것처럼 보이는건 기분탓입니다. 위에껀 쓰레기통이에요.



네. 뭐라고 하는진 모르겠지만 뭐 남자는 여자한테 어쩌구 저쩌구
하는 내용으로 되어 있네요.

아. 저는 최근에

이런걸 공부하고 있는데요,
이건 그래도 문제 풀면서 공부할순 있는데
저건 뭐 연습문제도 없고 공식도 없고 필기도 못하고
아직은 너무 어렵네요.

이 포스트 보고계시는 여러분은 아마 충분히 이해하시리라 믿습니다.
당장 트위터 아이디를 만드시고 저 이상한 글들을 구독해 보세요.


주의사항 : 여성분들이 팔로우해서 알티 몇번 할시 팔로잉이 기하급수적으로 줄어들지도 모릅니다. 아님 말고... 

Posted by 낭만폭풍
|
안드로이드 2.1 이하의 버전에서는 라이브러리 자체의 버그로 인해
네트워크가 느린 경우에서 스트림의 정보를 제대로 읽어오지 못하는 경우가 있는데
이를 방지하기 위해 FlushedInputStream 을 사용합니다.

대충 원리는 이렇습니다.
2.1에서의 InputStream은 네트워크가 이상하면 스트림의 몇개 바이트를 건너 뛰게 되어 있는데,
이렇게 되면 당연히 읽어온 정보가 없거나 잘못된 정보일 것이니
이를 방지하기 위해 건너뛴 바이트만큼을 다시 읽어들여서 씁니다.
[틀린점 있으면 댓글 환영합니다,]

아래는 해당 소스입니다. (출처 - 안드로이드펍 개발정보 게시판)



Posted by 낭만폭풍
|