2014년 10월 30일 목요일

svn 삭제한파일 커밋

svn st | grep '^!' | awk '{print $2}' | xargs svn delete


svn st 했을때 나오는 수정리스트 중

! 로 시작하는 삭제한 파일들을 grep 으로 걸러주고

awk 로 경로부분만 추출하여

svn delete 명령어에 인자값으로 던져주는 방식

2014년 4월 13일 일요일

자바스크립트 압축하기

jquery 등을 받아보면 jquery-min-xxx 이런식으로 된 파일이 있다

열어보면


위처럼 보기 힘들게 한줄로 쭉 붙어나오는 자바스크립트가 나오는데

이런 파일을 만들어주는게 있다

http://yui.github.io/yuicompressor/

위 주소에서 받을 수 있고

bash 의 쉘 스크립트에서 압축할 스크립트들을 합쳐서 압축하는 스크립트를 만들어봤다

#!/bin/bash
target=""
if [ $# -lt 1 ]
then
    target="./"
else
    target=$1
fi
output='output.js'
str="grep -ril --exclude-dir=\.git //_compress_ $target"
scripts=`$str; 2>/dev/null`
merge=`mktemp -t merge.js`
for file in ${scripts[@]}; do
cat $file >> $merge
done

java -jar /usr/bin/yuicompressor.jar --type js "$merge" > "$output"

스크립트파일을 적당한곳에 저장한 뒤

인자값으로 경로를 넣어주면 해당 경로 하위의 파일들 중 //_compress_ 라는 문구가 들어있는 파일을 찾아서 하나의 자바스크립트 파일로 만들어준다

2014년 3월 17일 월요일

NSString 을 hex 값으로 변환하기

#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

위처럼 정의해놓고 UIColorFromRGB(0xabcdef) 이렇게 사용하는 경우가 많은데

NSString *color = @"abcdef";

요 color 를 0xabcdef 로 바꿔주는 코드다

unsigned colorInt = 0;
[[NSScanner scannerWithString:color] scanHexInt:&colorInt];

위처럼 실행해주고

UIColorFromRGB(colorInt)


2013년 11월 19일 화요일

xcode는 plist 편집시 예약된 키값을 그대로 보여주지 않는다

동일한 프로젝트인데 테스트용으로 엔터프라이즈계정의 인하우스 배포를 하고

최종테스트 후 스토어용으로 빌드한 후 어플리케이션로더 를 통해서 업로드 하는 환경이기에

info.plist 에 Bundle identifier 값을 스토어용,인하우스용 으로 각각 달리 설정하고 빌드를 해야 한다

info.plist 에 Bundle identifier_:계정명 으로 키를 추가한 후 각각 앱 아이디를 설정해서 defaults 를 이용해서 Bundle identifier에 그 값을 써넣는 방식을 취해보려 다음과 같이 스크립트를 작성하였다

function setAppInfo()
{
    appID=`defaults read "$info_plist" "Bundle identifier_$USER"`
    defaults write "$info_plist" "Bundle identifier" "$appID"
}

당연히 되어야 할 것 같지만 빌드가 되지 않는다

파일을 열어보니 Bundle identifier 가 하나 더 추가되어있다

상식을 벗어난 동작에 한참을 멘붕 후 xcode가 아닌 텍스트편집기로 info.plist를 열어보니

Bundle identifier 의 키값이 Bundle identifier 가 아닌 CFBundleIdentifier 로 되어있다

function setAppInfo()
{
    appID=`defaults read "$info_plist" "Bundle identifier_$USER"`
    defaults write "$info_plist" "CFBundleIdentifier" "$appID"
}

로 실행하니 잘 동작함




1줄요약
App-Info.plist 의 Bundle identifier 키는 Bundle identifier 가 아니라 CFBundleIdentifier 다

2013년 11월 5일 화요일

iOS 웹뷰에서 iframe 높이값이 설정을 무시하고 내부 컨텐츠 크기만큼 커지는 경우

높이값이 1000px 인 웹페이지를 iframe 으로 열었을때

<style>
    div {
        width:300px;
        height:450px;
    }
    iframe {
        width:100%;
        height:100%;
    }
</style>
<div>
    <iframe src="height1000pxPage.html"/>
</div>


넓이 300px, 높이 350px div 내부에 같은 크기의 iframe 이 위치하고 iframe 내에서 1000px 짜리 컨텐츠가 스크롤되길 기대한다

데스크탑용 브라우저에서는 기대한대로 동작하는데

iOS의 웹뷰는 페이지 로드 후 div와 iframe 의 높이값을 보면 div는 450px, iframe 은 1000px 로 강제 설정된다

div에 overflow:auto; -webkit-overflow-scrolling: touch;

스타일을 적용해주면 해결

기대한대로 동작한다