12월, 2012의 게시물 표시

[iPhone] julian > Gregorian day

+ ( float )julianToDayCalendar:( float )Julian {     float a, b, c, d, e, m, day;     a = Julian + 32044 ;     b = floor ((( 4 * a) + 3 ) / 146097 );     c = a - floor (( 146097 * b) / 4 );     d = floor ((( 4 * c) + 3 ) / 1461 );     e = c - floor (( 1461 * d) / 4 );     m = floor ((( 5 * e) + 2 ) / 153 );     day = e - floor ((( 153 * m) + 2 ) / 5 ) + 1 ;          return day; }

[iPhone] Julian > Gregorian Month

+ ( float )julianToMonthCalendar:( float )Julian {     float a, b, c, d, e, m, month;     a = Julian + 32044 ;     b = floor ((( 4 * a) + 3 ) / 146097 );     c = a - floor (( 146097 * b) / 4 );     d = floor ((( 4 * c) + 3 ) / 1461 );     e = c - floor (( 1461 * d) / 4 );     m = floor ((( 5 * e) + 2 ) / 153 );     month = m + 3 - 12 * floor (m / 10 );          return month; }

[iPhone] Julian > Gregorian Year

+ ( float )julianToYearCalendar:( float )Julian {     float a, b, c, d, e, m, year;     a = Julian + 32044 ;     b = floor ((( 4 * a) + 3 ) / 146097 );     c = a - floor (( 146097 * b) / 4 );     d = floor ((( 4 * c) + 3 ) / 1461 );     e = c - floor (( 1461 * d) / 4 );     m = floor ((( 5 * e) + 2 ) / 153 );     year = ( 100 * b) + d - 4800 + floor (m / 10 );          return year; }

[iPhone] Gregorian > Julian Date

+ ( float )solarToJulianCalendar:( int )Year setMonth:( int )Month setDay:( int )Day {     float JD, a, y, m;     a = floor ((( 14 - Month) / 12 ));     y = Year + 4800 - a;     m = Month + ( 12 * a) - 3 ;     JD = Day + floor ((( 153 * m) + 2 ) / 5 ) + ( 365 * y) + floor (y / 4 ) - floor (y / 100 ) + floor (y / 400 ) - 32045 ;          return JD; }

[Julian Date > gregorian] 줄리안 달력을 그레고리 달력으로 변환하기

출처 : http://www.tondering.dk/claus/cal/julperiod.php#formula a = JD + 32044 b = ((4 * a) + 3) / 146097 c = a - ((146097 * b) / 4) d = ((4 * c) + 3) / 1461 e = c - ((1461 * d) / 4) m = ((5 * e) + 2) / 153 day = e - (((153 * m) + 2) / 5) + 1 month = m + 3 - 12 * (m / 10) year = (100 * b) + d - 4800 + (m / 10) 위와 같이 하면 줄리안 데이트에서 년월일을 추출할 수 있습니다.

[Gregorian -> Julian Date]그레고리 달력을 줄리안 달력으로 변환하기

출처 : http://www.tondering.dk/claus/cal/julperiod.php#formula a = (14 - month) / 12 y = year + 4800 - a m = month + (12 * a) - 3 JD = day + (((153 * m) + 2) / 5) + (365 * y) + (y / 4) - (y / 100) + (y / 400) - 32045 위의 알고리즘을 사용하면 됩니다. 줄리안 달력은 BC 4713년 1월 1일부터 시작하는 달력입니다. 기준은 그리니치 천문대입니다. 한국은 +9 시입니다. 보통 날짜 계산 등에 많이 사용합니다.

[iOS 개발] Yesterday 작성 방법

iOS 개발할 때 날짜 관련 함수를 사용할 때가 많다. 주로 NSDate 를 이용한다. 어제를 표시하기 위해서는 다음과 같이 한다. 방법 1. NSTimeInterval secondsPerDay = 24 * 60 * 60; NSDate *yesterday = [[NSDate alloc] initWithTimeIntervalSinceNow:-secondsPerDay]; 방법 2. NSTimeInterval secondsPerDay = 24 * 60 * 60; NSDate *today = [NSDate alloc] init]; NSDate *yesterday = [today dateByAddingTimeInterval: -secondsPerDay]; 위와 같이 하면 yesterday 가 변수에 설정되었다. 이제 사용하기만 하면 된다.

Nginx (엔진엑스) 에 대하여

Nginx 는 웹서버이다. 보통 경량 웹서버라고도 한다. 소켓을 이용해서 통신을 하는데 소켓을 연결할 때 블로킹과 넌블로킹이 있다. 블로킹은 연결이 끝날때까지 제어권을 운영체제에 주지 않는 방식이고 넌 블로킹은 제어권을 운영체제에 주는 방식이다. 소켓이 연결되고 난 후 제어권이 운영체제에 넘어오지 않았을 경우 에러가 난다면..., 대략 난감한 상황이 벌어진다. 엔진 엑스는 넌블로킹 방식이다. 문제가 되는 세션은 잘라 버릴 수 있다는 것이다. 또, 프로세스와 스레드 방식이 있다. 프로그램이 실행이 되려면 프로세스를 얻어야 한다. 하지만 프로세스 하나를 자세히 보면 더 작은 부분으로 나눌 수 있는데 이를 스레드라 한다. 예를 들어 1부터 100까지 더하는 알고리즘에서 1부터 100까지 더하고 알고리즘에서 빠져 나올때까지가 프로세스이다. 하지만 더하는 도중에 결과를 실시간으로 보고 싶다면 스레드로 구성하면 가능하다. 이럴 경우 프로그래머의 능력이 필요하다. 엔진엑스는 스레드 방식이다. 속도면에서 넌블로킹과 스레드의 조합은 환상적이다. 기존의 구성에 변경을 주지 않고 앞단에 엔진엑스를 설치하고 프록시로 처리하기만 해도 속도향상이 이루어진다고 한다. 과연 그런지는 한번 해봐야 할 꺼 같다.