sun's longitude:258 24 9.03 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  
자유 게시판(광고사절)
[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
304 번 글의 답장글: Re: XE 모듈 배포 알려드립니다.
글쓴이: 산이 [홈페이지] 글쓴날: 2010년 10월 15일 13:05:11 금(오후) 조회: 1631

[난다날아]님이
 남기신 글:

>XE 모듈을 배포했습니다. http://www.xpressengine.com/?mid=download&package_srl=19202124
>프로젝트 사이트 위키에 관련 내용도 적었고요. http://lunar.xpressengine.net/?mid=wiki&act=dispWikiContent
>
>보시고 혹시 고쳐야할 부분이 있으면 알려주세요. 

========================================

안녕하세요?
생각보다 빨리 끝내셨네요. ㅎㅎ

우선 몇가지 알려드립니다.

1. 음양력 범위 확장

음양력 변환 범위를 좀더 먼과거나 미래로 확장하려면
엔진의 기본 단위를 unixtime stamp 가 아닌 JD 로 모두 바꿔야
합니다.
이것의 기반이 되는게 class.calendar.php 입니다.
(class.lunar.php 나 class.solar.php 에는 군데군데 흔적이 있습니다)

즉 class.calendar.php 를 이용한 달력 출력은 현재 먼과거나
먼미래까지 모두 출력 가능합니다.
다만 아직 음양력 변환은 태양의 시황경, 달의 시황경 계산법이
근사식이라서 먼과거나
미래는 아직 적용을 못하고 있습니다.

또한 엔진의 기본 단위를 JD 로 모두 바꾸는 작업은 엔진 코어
부분이라서 머리 쥐납니다. ㅠㅠ
그렇다고 불가능하지는 않지만 요즘 그냥 귀찮아서 손도
안대고 있습니다.

언젠가는 feel 받으면 대폭 수정할 예정입니다.


2. 사용자가 입력한 양력 년, 월, 일에 대한 유효성 검사

예를 들어, 2010/02/29 을 자동으로 2010/03/01 로 변환해서 다음
루틴으로 가느냐
아니면 그냥 에러 메시지를 내느냐 문제입니다.

전자의 경우는

list($y,$m,$d) = explode(' ',calendar::date('Y n
j',calendar::mkjd(12,0,0,$m,$d,$y)));

이렇게 올바른 날짜로 정수형으로 rewrite 하시면 됩니다.

그 외에 단순히 해달 달의 마지막 일(n)만 체크하려면

$n = calendar::days_in_month($year,$month);

이런식으로 체크하시면 됩니다.
isValidSolar() 와 기능은 다르지만 비슷한 루틴이 있는데
calendar::days_in_month() 함수입니다.


3. 음력->양력 변환시 사용자가 입력한 윤달의 유효성

이것 역시 2번과 같은 범주인데 관점을 어디에다 두느냐에
따라서 코딩을 달리 할 수 있습니다.

즉 특정 음력 날짜의 달이 윤달인지 아닌지는 좀 헷가리는
유저들이 많습니다.
이를 위해서 자동으로 계산해서 변환해서 안내해 주는게 좋을
듯 합니다.

예를들어,

function get_lunar2solar($y, $m, $d, $leap)
{
  $leap = (int)$leap;
  $solar = $this->tosolar($y,$m,$d,$leap);
  if(!$solar[1])
  {
      $solar = $this->tosolar($y,$m,$d,$leap^1);
      if(!$solar[1]) return false;
      $leap ^= 1;
  }

  // 변환된 양력을 다시 음력으로 변한해서 비교해 봄
  //
  $lunar = $this->tolunar($solar[2],$solar[3],$solar[4]);
  if(sprintf('%04d-%02d-%02d%d',$y,$m,$d,$leap) != $lunar[0].$lunar[1][3]) return
false; // some error

  return $solar;
}


4. 자신의 생일에 별자리도 표시해 주면 더 좋을 듯 하네요.

lunar::zodiac($y, $m, $d, $lunar=0, $leap=0)


5. 그 외에

예전에 블러그 보니깐 class.lunar.php 를 C 로 포팅해서 가계부를
만들었더군요.
오늘 그 싸이트 찾아보니 못찾겠네요. ㅠㅠ

가계부도 XE 에 들어가면 좋을 것 같다는 느낌이 드네요.
그 외에, 24절기, 삼복 날짜는 class.solar.php 에 있습니다.

그럼 ㅅㄱ 하세요.

 
이전글 : 죄송합니다.
다음글 : 산이님 이메일 확인 부탁드립니다.  
 from 211.108.72.250
JS(Redhands)Board 0.4 +@

죄송합니다. 산이님 이메일 확인 부탁드립니다.
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2024. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds