" php(으)로 태그된 글들"

현재 한반도 구름 사진 2

2006-07-03   //   alexken작성   //   기술, 천문  //  1 Comment

현재 한반도 구름 사진

예전에 만들었던 한반도 구름사진 페이지  http://hanury.net/wp/astro/claud/ 가 호스팅 시작후에 서버 설정에 의해 안돌아 가고 말았다.

호스팅을 맏긴 cafe24에서 php 5를 지원 안해서

•php4에서 stream_get_contents()가 지원이 안되고,
•sensitive URL Open을 막아서 인데, 어쩔수 없이

$fp = fopen($url, 'r');
$str = stream_get_contents($fp);

위에 2줄로 끝나던 코드를
my_stream_get_contents란 함수를 추가해주고(php4에서 없으므로)
fopen만으로 열던 것을 socket을 이용해서 열도록 수정해야만 했다…

function my_stream_get_contents($fp){
  $buf = "";
  while(!feof($fp)){
    $buf .= fread($fp,1024*8);
  }
  return($buf);
}
$fp = fsockopen($host, 80, $errno, $errstr, 12);
fputs($fp,"GET $url HTTP/1.0\r\n");
fputs($fp,"Host: $host\r\n");
fputs($fp,"Referer: http://$host\r\n");
fputs($fp,"User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT5.1)\r\n\r\n");
$str = my_stream_get_contents($fp);

아! 점점 코드 지저분해 진다.

하늘이 태어난지 몇일 째인지 표시

2006-06-26   //   alexken작성   //   기술, 하늘이  //  1 Comment

header.png
그림과 같이 하늘이가 태어난 지 몇일 지났는지 블로그 헤더에 붙였다.

echo(time()-date("U",mktime(date("H"),date("i"),date("s"),2,21,2006)))/60/60/24+1;

다소 지저분해 보이긴 하지만, 헤더에 그냥 붙일꺼라서…
끝에 +1 한 이유는 우리나라에서는 태어난날을 1일로 친다고해서, +1일 해줌.

현재 한반도 구름 사진

2006-06-22   //   alexken작성   //   기술, 천문  //  3 Comments


장마라, 별 볼일 없지만, 날씨 좋은날 주말이 다가오면 자주 찾아가는 곳 중의 하나가 기상청 위성 사진 페이지이다.
그래서 기상청에서 현재 위성 이미지를 가져와서 보여주는 페이지를 astro 메뉴 밑에 작성하려고 짜 보았다.
php에서 httprequest 같은거 없나 하고 한참을 찾았는데, 그냥 파일처럼 처리하면 되네…
역시 모르면 고생…

$url = 'http://www.kma.go.kr/kor/weather/picture/picture_01.jsp'; 
$base_url = 'http://www.kma.go.kr';   
$fp = fopen($url, 'r'); 

$str = stream_get_contents($fp);   

if ( ereg ( "(/kma_sat/DATA/MTSAT/GPL/wli[0-9]+\.gif)" , $str, $reg)){   
  echo "< img src='http://www.kma.go.kr$reg[0]' / >"; 
}else{   
  echo "fail to get image";
}

xml로 제공해주면 좋으련만….

Astronomy Picture of the Day 페이지 추가

2006-06-22   //   alexken작성   //   기술, 천문  //  7 Comments

이전 글에 이어서 계속….
바로 밑에 Ajax가 어쩌구 XMLHttpRequest가 저쩌구 했는데,
브라우저간 약간 씩 서로 다른 동작이나, IE인 경우엔 ActiveX 경고창이 뜨고해서,

서버에서 렌더링 해서 내리기로 변경….

코드도 의외로 간단.

$xml = new DomDocument;
$xml->load("http://www.jwz.org/cheesegrater/RSS/apod.rss");

$xsl = new DomDocument;
$xsl->load("apod.xsl");

$proc = new xsltprocessor;
$proc->importStyleSheet($xsl);
echo $proc->transformToXML($xml);
apod.rss와 apod.xsl을 읽어와서
apos.rss를 apod.xsl을 이용해서 렌더링 해서 그냥 화면에 뿌려줌.  끝

apod.xsl파일

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
 
  <xsl:template match="/rss/channel">
    <xsl:value-of select="pubDate"/> by NASA
    <xsl:value-of select="item/description"
        disable-output-escaping = "yes" />
  </xsl:template>
 
</xsl:stylesheet>

/rss/item/description의 내용이 escape처리된 html 소스인데, 그냥 처리하면 화면에 html 소스가 출력된다.
value-of의 disable-output-escaping 속성 “yes”로 해주어야 한다.(이거 몰라서 한참을 찾았음)