노 전대통령 국민장 조문

오늘 노 전대통령 영결식이 있었다.

영결식에는 참석하지 못하고, 어제 서울역에 마련된 국민장에 가서 조문을 드렸다.

회사 근처의 봉은사도 있었지만 왠지 초라해 보여 멀더라도 서울역까지 가고 싶었다.

노무현 전 대통령 국민장

조문하는 사람들이 많아서인지 4줄까지 만들어 놓았다.

노무현 전 대통령 국민장

아이를 업고서 조문하는 분.

이 날 나이드신 어르신, 몸이 불편하여 휠체어를 타고 오신 분, 교복입은 청소년등 여러 시민분들이 조문하는 모습을 볼 수 있었다.

노무현 전 대통령 국민장

조문을 끝내고 방명록을 작성하는 시민들

노무현 전 대통령 국민장

노무현 전 대통령 국민장

여러가지 사연을 보고 쓰는 시민들

Open Flash Chart 2

PHP로 Google Analytics 데이터를 수신하여 일별 통계를 차트로 보여주고 싶어서 Open Flash Chart를 찾았는데

Open Flash Chart 2가 있어서 이것을 써 보기로 했다.

Open Flash Chart 예제

Open Flash Chart 예제

구현

먼저 컨트롤러인 chart.php를 보면 다음과 같다.

차트를 개발할 땐 실제 데이터를 사용하기 보다 아래와 같이 예제 데이터를 생성하고 하는 것이 좋다.

require_once "OpenFlashChart/open-flash-chart.php";

// Google Analytics 예제 데이터
$dateList = array (
    "20090501" => array ("pageviews" => 100,"visits" => 50,  "visitors" => 10),
    "20090502" => array ("pageviews" => 101,"visits" => 52,  "visitors" => 10),
    ...
    "20090520" => array ("pageviews" => 200,"visits" => 80,  "visitors" => 22)
);
// 데이터를 날짜로 변경
function toDate($str) {
    $str = strval($str);
    return date("M/d", mktime(0, 0, 0, substr($str,4,2), substr($str,6,2), substr($str,0,4)) );
}
$pvValue      = array();  // 페이지뷰 값
$visitValue   = array();  // 방문 값
$visitorValue = array();  // 방문자 값

$x_axis_label = array();
$i    = 0;
$maxY = 0;
foreach ( $dateList as $dimension=>$value ) {
    if ($i % 5 == 0) { // X 축 레이블은 모든 값이 아닌 5씩 건너 뛴다.
        array_push($x_axis_label, toDate($dimension));
    } else {
        array_push($x_axis_label, "");
    }

    $pv      = intval($value["pageviews"]);
    $visit   = intval($value["visits"]);
    $visitor = intval($value["visitors"]);

    array_push( $pvValue,      $pv);
    array_push( $visitValue,   $visit );
    array_push( $visitorValue, $visitor );

    // 최대 Y 값
    $maxY = max($maxY, $pv, $visit, $visitor);
    $i++;
}

// 페이지 뷰 선
$pvLine = new line();
$pvLine->set_key("페이지뷰",10);
$pvLine->set_values( $pvValue );

// 방문 선
$visitLine = new line();
$visitLine->set_colour("#00ffff");
$visitLine->set_key("방문",10);
$visitLine->set_values( $visitValue );

// 방문자 선
$visitorLine = new line();
$visitorLine->set_colour("#ff0000");
$visitorLine->set_key("방문자",10);
$visitorLine->set_values( $visitorValue );

// X 축
$x_axis = new x_axis();
$x_axis->set_range(0,count($dateList));
$x_axis->set_labels_from_array( $x_axis_label );

// Y 축
$y_axis = new y_axis();
$y_axis->set_range(0,$maxY, round($maxY / 5));

// 차트 생성
$chart = new open_flash_chart();
$chart->set_title( new title( "일별 통계" ) );
$chart->set_bg_colour( "#ffffff" );
$chart->add_element( $pvLine );
$chart->add_element( $visitLine );
$chart->add_element( $visitorLine );
$chart->set_x_axis( $x_axis );
$chart->set_y_axis( $y_axis );

$smarty->assign("chart", $chart);
...
$smarty->assign("content_tpl", "chart.tpl");
$smarty->display("layout.tpl");

이제 smarty를 사용한 뷰에 해당하는 chart.tpl을 보면 다음과 같다.

<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript" src="js/swfobject2.js"></script>
...
{if $chart}
<div id="my_chart"></div>
<script type="text/javascript">
swfobject.embedSWF("/swf/open-flash-chart.swf", "my_chart", "100%", "200", "9.0.0");
</script>
{/if}
...
{if $chart}
<script type="text/javascript">
function open_flash_chart_data() {ldelim}
    var chartData = {$chart->toString()};
    return JSON.stringify(chartData);
{rdelim}
</script>
{/if}

참고

MANDARINA DUCK for sony style

MacBook을 가지고 다닐 때 Sun의 Developer day에서 받았던 노트북 가방을 사용했다.

워낙 가벼운 가방이라 오랫동안 만족스러웠는데, 우연찮게 MANDARINA DUCK을 선물받게 되었다.

MANDARINA DUCK for sony style

MANDARINA DUCK for sony style

백 팩과 숄더 백, 브리프 케이스로로 사용할 수 있도록 되어있다.

물론 평상 시에는 백 팩으로 사용할 테지만 가끔 숄더 백으로 이용이 가능할 것같다.

가방 안의 포켓 구성 및 가방 안을 잘 볼 수 있도록 벌어지게 만들어진 구성이 맘에 든다.

둥그런 손잡이가 만다리나 덕의 포인트지만 내 눈에는 좀 거슬린다.

그리고 키 홀더는 정말 쓸모없어 보인다.

소위 똑딱이 단추로 되어있어서 너무나 쉽게 떨어져 키 잃어 버릴 위험이 너무 크다.