우분투2012. 9. 22. 15:12
wget을 사용하여 정기적인 작업을 실행하도록 설정하는 경우가 종종 있는데

보통 crontab에 설정하여 일정시간동안 돌아가도록 설정한다. 

다음과 같이 crontab에 추가했다면

*/10 * * * * root wget http://aaa.com/update.php

/root디렉토리 하위에 실행할때마다 파일이 생성된다. update.php, update.php.1, update.php.2

이걸 따로 지우기도 머하고 

그냥 다음과 같이 설정한다.

*/10 * * * * root wget -O /tmp/update.php http://aaa.com/update.php

이렇게 하면 tmp에 파일이 생성되기 때문에 디렉토리가 지저분해지지 않는다.

 

Posted by 다오나무
iOS2012. 9. 22. 00:30

////////////////////////////////////////////////////////////////////////////////////
// 앱 정보 가져오기
NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];

// 앱 버전
NSString *szAppVersion = [ infoDict objectForKey:@"CFBundleShortVersionString"];
// 빌드 버전
NSString *szAppBuildVer = [ infoDict objectForKey:@"CFBundleVersion"];
// 앱 이름
NSString *szAppName= [ infoDict objectForKey:@"CFBundleDisplayName"];

Posted by 다오나무
우분투2012. 9. 21. 20:36

mysql의 log-bin을 활성화시켜 놓고 오래 사용하는 경우 var디렉토리에 mysql-bin.XXXX 형태의 바이너리 로그 파일이 계속 쌓이게 됩니다.
때로는 이 로그를 분석해서 어떤 쿼리들이 실행되었었는지 확인도 되고, 백업이나 복구에 사용되기도 하기 때문에 유용할 수 있습니다.
특히 DB 리플리케이션을 쓰려면 이 로그가 필요합니다.
그러나 작은 파티션에 계속해서 로그가 쌓이다 보면 어느 순간 용량이 부족해지게 되면 mysql구동에 문제가 생겨 버립니다. 그래서, 적당한 용량으로 로그를 유지하는 간단한 방법을 소개합니다.

바로 로그의 만료 기간을 지정해 주는 것입니다.
mysql에 접속한 후 아래의 명령으로 시스템 변수들을 확인해 보시면 expire_logs_days 라는 값이 0으로 되어 있을 것입니다.

mysql> show variables;

이 변수를 아래와 같이 원하는 기간으로 지정해 줄 수 있습니다.

mysql> set global expire_logs_days = 3;

다시, 위의 show variables;로 확인해 보시면 3일로 변경된 것이 보일 것입니다.
이러면 3일간의 로그만 보존되게 되면서 용량 문제가 없어집니다!


Posted by 다오나무
jQuery2012. 9. 20. 10:43

jQuery에서 ID값으로 탐색을 할경우 최상위 ID만을 탐색하고 멈춥니다.

그 문제를 해결하는 방법은 ID 대신 Class를 사용 하시는 겁니다.

같은 기능의 여러 객체가 필요 할경우 

<% For i = 0 To ... %>
<input type="text" name="date" class="date">
<% Next %>

위와 같으 id대신 class 주시고

$(function()
{
    $(".data").mask("9999-99-99");
});

와 같이 주시면 해결이 되실 겁니다.

참고로 클래스는 디자이너들이 CSS를 주기위해 많이 사용 하는데 그때는

당황 하지 마시고 class="DesignCss date"와 같이 주시게 되면 DesignCss와 date를 따로 탐색 할수 있습니다

'jQuery' 카테고리의 다른 글

jquery javascript confirm 확인/취소 버튼  (0) 2012.07.24
Posted by 다오나무
iOS2012. 9. 18. 15:10

지난 강좌에서는 동기식으로 이미지를 가져오는 것을 구현했습니다. 하지만 동기식으로 데이터를 가져올 경우 용량이 큰 데이터에서 앱이 멈춰버리는 현상을 발견할 수 있습니다. 이처럼 앱이 멈추는것과 같은 현상을 제거하기 위해서는 비동기식으로 데이터를 가져와야합니다. 이번 강좌에서는 비동기식으로 데이터를 가져오는 방법, 그중에서 NSThread를 이용하는 방법에 대해서 알아보겠습니다.


 비동기식으로 데이터를 읽어온다면 앱의 사용자에게 '지금은 데이터를 로딩하는 중입니다.' 라는 것을 알리기 위한 방법이 필요합니다. 그 중에서 가장 많이 사용되는 방법은 Indicator를 사용하는 방법입니다. (데이터를 로딩하면 빙글빙글 돌아가는 그것입니다.) 프로젝트의 헤더에서 아래와 같이 구성해준 후 인터페이스 빌더에서 연결해줍니다.





 본 프로젝트에서는 뷰가 로드됨과 동시에 이미지를 읽어온다고 했지만, 개발자의 사정에 맞춰서 적당한 순간에 데이터를 로드하면 되겠습니다.



 우선 뷰가 로드되고 동시에 데이터를 읽어오므로 indicator를 start 해줍니다. 대부분의 사항은 상단의 코드와 주석을 봐도 충분히 이해 될 것이라고 생각합니다. 이 방법의 기본 개념은 '같은 스레드에서 이미지를 로딩하면 데이터가 로드되는 코드에서 앱이 멈춰버리고 코드가 진행되질 않으니 데이터를 로딩하는 부분만 다른 스레드에서 실행되게 하자' 입니다. 그래서 이처럼 데이터를 로드하는 부분만 따로 메서드로 구현해줍니다.




 데이터를 로드하는 부분에서 이처럼 데이터를 로드하고 이미지를 세팅하는 것 까지 구현해줍니다. 이제 앱을 실행시키면 Indicator가 돌아가다가 이미지의 로드가 끝나게 되면 Indicator가 사라지고 이미지가 화면에 출력됩니다. 단지 데이터를 읽어오는 부분만 리팩토링하여 스레드로 실행시키기만 하면 동기식 데이터 로드가 비동기식으로 전환 되는 것입니다.

Posted by 다오나무
iOS2012. 9. 18. 00:37

//경고창 1.

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"A" message:@"" delegate:self cancelButtonTitle:@"확인" otherButtonTitles:@"취소"nil];

[alert show];

[alert release];


//경고창 2

UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"B" message:@"" delegate:self 

cancelButtonTitle:@"확인" otherButtonTitles:@"취소"nil];

[alert show];

[alert release];


//경고창 3

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"C" message:@"" delegate:self 

cancelButtonTitle:@"확인" otherButtonTitles:@"취소"nil];

[alert show];

[alert release];



//경고창의 버튼 이벤트를 감지하는 델리게이트.

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

{

//경고창의 타이틀을 비교해서 경고창을 구별한다.

if ( [[alertView titleisEqualToString:@"A"])

{

        if(buttonIndex==0){

}else {

}

    

}

else if ( [[alertView titleisEqualToString:@"B"]) 

{

if(buttonIndex==0){

}

}

else if ( [[alertView titleisEqualToString:@"C"]) 

{

if(buttonIndex==0){

}

}

}

Posted by 다오나무
iOS2012. 9. 18. 00:24

http://www.iphonedevsdk.com/forum/iphone-sdk-development/61426-multiple-action-sheets-problem.html
UIActionSheet *actionSheet1;
UIActionSheet *actionSheet2;
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
if(actionSheet==actionSheet1)
{
do this}
else
if(actionSheet==actionSheet2)
{do that}
}

Posted by 다오나무
iOS2012. 9. 17. 22:07

addSubView 된 객체에 대한 접근 방법


서브뷰 내에 어떻게 뷰들이 분포해 있는지 알 수 없기 때문에

아래와 같은 식으로 태그값을 이용해서 조작을 원하는 뷰를 찾은 다음에 그 뷰를 조작해야 합니다.

 

for(UIView *v in [scrollView.SubScrollView subviews]) {

if(v.tag == index) v.frame = rect;

}


Posted by 다오나무
iOS2012. 9. 17. 18:21

간단한 뷰를 만들었는데요.. 화면 밑에 이미지나 버튼을 넣었을때 핫스팟이나 인터넷 테더링이 활성화 되어서 상태바가 두줄이 생겼을 경우엔 화면이 잘립니다. 

상태바가 두줄이 되었을경우의 조건을 주어 좌표 수정을 하고 싶은데 조건 문의 드립니다. 

감사합니다. 
  • 2011/09/20 10:35답글

    신고

    앵커로 처리하시면 될 듯..;;

  • 2011/09/20 19:02답글

    신고

    Uiapplication 의 shared인스턴스를 따와서 델리게이트를 설정해주신후에 거기에 delegate method 중에 statusbarframe change 같은 델리게이트 메소드가있습니다 그거활용하심될듯요

Posted by 다오나무
iOS2012. 9. 17. 13:14

This is the approach I use for iOS 4 and 5 compatibility:

if ([toolbar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) {
   
[toolbar setBackgroundImage:[UIImage imageNamed:@"toolbar-background"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
} else {
   
[toolbar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"toolbar-background"]] autorelease] atIndex:0];
}

Posted by 다오나무