timeout = 1; if ($request->send()){ $rst = $request->responseText; } // $rst = html_entity_decode($rst); $rst = uft8html2utf8($rst); $xmls = new XMLStruct(); $xmls->open($rst); if($xmls->doesExist('/rss/channel/title')) { $title=$xmls->getValue('/rss/channel/title'); } if($xmls->doesExist('/rss/channel/link')) { $link=$xmls->getValue('/rss/channel/link'); } $rankicon = ($data['icon_use']=='T')?" style=\"margin:4px 0px 0px 0px;padding:0px;list-style:none;margin-left:1px;\"":""; list($me2dayer, $temp) = split('님의 ', $title); $me2day .= $data['md_header']."\n"; $me2day .= "\n"; $me2day .= $data['md_footer']; } return $me2day; } function Me2DayConfig_ko($plugin) { global $service; $manifest = ''; $manifest .= ''.CRLF; $manifest .= ''.CRLF; $manifest .= ' '.CRLF; $manifest .= '
'.CRLF; $manifest .= ' '; $manifest .= ' '.CRLF; $manifest .= ' http://me2day.net/doa라면 doa를 입력하면 됩니다. 하나 이상의 주소를 입력하려면 주소와 주소를 쉼표로 구분(예: doa,taemy)하면 됩니다. 주소와 주소 사이에는 공백이 있어서는 안됩니다.'.CRLF; $manifest .= ' ]]>'.CRLF; $manifest .= ' '.CRLF; $manifest .= ' '.CRLF; $manifest .= '
'.CRLF; $manifest .= '
'.CRLF; $manifest .= ' '; $manifest .= ' '; $manifest .= ' '.CRLF; $manifest .= ' 글의 수에는 목록에 표시할 글의 수를 지정하고 글자 수에는 글 하나당 표시할 글자 수를 입력합니다.'.CRLF; $manifest .= ' ]]>'.CRLF; $manifest .= ' '.CRLF; $manifest .= ' '.CRLF; $manifest .= '
'.CRLF; $manifest .= '
'.CRLF; $manifest .= ' '; $manifest .= ' 사용'.CRLF; $manifest .= ' 사용 안 함'.CRLF; $manifest .= ' '.CRLF; $manifest .= ' '.CRLF; $manifest .= ' '.CRLF; $manifest .= ' '.CRLF; $manifest .= '
'.CRLF; $manifest .= '
'.CRLF; $manifest .= ' '; $manifest .= ' 날짜'.CRLF; $manifest .= ' 시간'.CRLF; $manifest .= ' '.CRLF; $manifest .= ' 날짜 - 글 제목(시간)입니다.'.CRLF; $manifest .= ' ]]>'.CRLF; $manifest .= ' '.CRLF; $manifest .= ' '.CRLF; $manifest .= '
'.CRLF; $manifest .= '
'.CRLF; $manifest .= ' 미투데이]]>'.CRLF; $manifest .= '
'.CRLF; $manifest .= '
'.CRLF; $manifest .= ' ]]>'.CRLF; $manifest .= '
'.CRLF; $manifest .= '
'.CRLF; $manifest .= ' '; $manifest .= ' 사용'.CRLF; $manifest .= ' 사용 안 함'.CRLF; $manifest .= ' '.CRLF; $manifest .= ' 사용을 선택합니다. 치환자를 사용할 사람은 사이드바를 사용 안 함으로 설정하고 치환자를 스킨 파일의 원하는 위치에 삽입하면 됩니다.

이 플러그인에 대한 더 자세한 정보는 미투와 블로그를 하나로, 태터툴즈 미투데이 플러그인을 읽어보기 바랍니다.'.CRLF; $manifest .= ' ]]>'.CRLF; $manifest .= ' '.CRLF; $manifest .= '
'.CRLF; $manifest .= '
'.CRLF; $manifest .= '
'; return $manifest; } ?> #dhtmltooltip{ position: absolute; border: 1px solid #ccc; padding: 0px 5px; visibility: hidden; z-index: 100; color : #000; font-size: 11px; text-align: left; } #tooltip_ul{ list-style-type:none; margin: 0px !important; padding : 0 !important; } #tooltip_ul li{ margin: 4px !important; padding: 0px 0px 2px 18px !important; line-height: 16px !important; } #tooltip_date{ font-size: 12px; color : #000060; font-weight: bold; background : url(".$pluginURL."/date-plain.png) no-repeat 0px 50% !important; border-bottom-width: 1px !important; border-top-style: none !important; border-right-style: none !important; border-bottom-style: solid !important; border-left-style: none !important; border-bottom-color: #EEE !important; } #tooltip_post{ background : url(".$pluginURL."/doc-option-edit.png) no-repeat 0px 50% !important; border : none !important; } #tooltip_guest{ background : url(".$pluginURL."/user-plain-blue_mod.png) no-repeat 0px 50% !important; border : none !important; } #draco_counter { margin: 0px !important; padding: 0px !important;"; $target .= " font-family: Tahoma; font-size: 9px;"; if(isset($xy_color)) {$target .="color : ".$xy_color.";";} $target .=" } #draco_counter_y p{ display: block !important; margin: 0px !important; line-height: 12px !important; } #draco_counter_x p{ display: inline !important; margin: 0px !important; line-height: 12px !important; padding: 0px !important; } #draco_counter_y{ width: 30px; height: 100px; text-align: right; } #draco_counter_y_mid{ padding: 34px 0px 46px 0px; } #draco_counter_x { width : ".($graph_width)."px; height: 12px; margin: 0px !important; padding: 0px !important; } #draco_counter_x1{ float: left !important; text-align: left; } #draco_counter_x2{ float: right !important; text-align: right; }
"; $target .= ""; #그래프 왼쪽 Y축 if($disp_y=='true'){ $target .=""; } $target .= ""; #그래프 하단 X축 if($disp_x=='true'){ $target .=""; if($disp_y=='true') $target .=""; $target .=""; } $target .= "

$max_data[visits]

"; if($cut_peak == 'true') $target .= $avg; else $target .= round($max_data[visits]/2); $target .="

"; $chd = ""; $map_x = 0; $map_x_next = $map_x + intval($graph_barwidth/2); $loopcount = 0; #그래프 그리기 반복 부분 while($dcount_data=mysql_fetch_array($dcount_result)) { # 그래프 크기 계산 $dcount_data[visits]=stripslashes($dcount_data[visits]); $graph_high = round($dcount_data[visits] / $graph_max *95); if($graph_high>95) $graph_high = 95; else if($graph_high<0) $graph_high = 0; if($chd!="") $chd .= ","; $chd .= $graph_high.".0"; # 날짜 데이터 년월일로 쪼개기 $y = intval($dcount_data[date]/10000); $m = intval(($dcount_data[date]%10000)/100); $d = $dcount_data[date]%100; # 날짜 데이터 mktime $day_post1_time = mktime(0, 0, 0, $m, $d, $y); $day_post2_time = $day_post1_time + 86400; # 해당 날짜에 몇개의 글을 썼나 찾기 $day_post_query = "SELECT id FROM `".$database['prefix']."Entries` WHERE `published` >= $day_post1_time AND `published` < $day_post2_time AND `".$blogid_col."` = $owner AND `visibility` >= 2 AND `category` > 0"; $day_post_data = mysql_query($day_post_query) or die("쿼리 실패6 : " . mysql_error()); $day_post = mysql_num_rows($day_post_data); # 툴팁 창 만들기 $dcount_day = "
  • ".$y."년 ".$m."월 ".$d."일
  • 포스팅 "; if($day_post) $dcount_day .= ": ".$day_post."개"; else $dcount_day .= "없음"; $dcount_day .= "
  • 방문자 : ".$dcount_data[visits]."명
"; #이미지 맵 만들기 if($day_post){ $target .= ""; } else { $target .= ""; } $map_x = $map_x_next+1; $map_x_next = $map_x -1 + $graph_barwidth; $loopcount ++; $lastvisit = $dcount_data[visits]; } #구글 api 이미지 주소 만들기 $chart_img = "http://chart.apis.google.com/chart?chs=".$graph_width."x100&chd=t:".$chd."&cht=lc&chco=".str_replace("#","",$graph_color)."&chf=bg,s,".str_replace("#","",$graph_backcolor); if($view_grid=='true') $chart_img .="&chg=".(100/$how_day*7).",50"; if($line_blank=='true') $chart_img .= "&chls=".$line_thickness.",".($line_thickness*2).",".$line_thickness; else $chart_img .= "&chls=".$line_thickness.",".($line_thickness*2).",0"; if($graph_fillcolor) $chart_img .="&chm=B,".str_replace("#","",$graph_fillcolor).",0,0,0"; if($view_marker=='true'){ if(!$graph_fillcolor) $chart_img .="&chm="; else $chart_img .="|"; $chart_img .="c,6C57E2,0,$high_diff.0,10.0|x,E25757,0,$low_diff.0,10.0"; } if($graph_fillcolor || $view_marker=='true') $chart_overimg = $chart_img."|"; else $chart_overimg = $chart_img."&chm="; $target .= "
"; $target .= "

-$how_day days

today : $lastvisit

"; #------------------------------------------------------------------------------------------ return $target; } ?> JCF TEAM BLOG » 간단 팁) Java 1.4에서 Spring TestingFramework 분위기 내기

JCF TEAM BLOG

관리자 글쓰기
블로그 »
스프링의 테스팅 프레임워크를 사용하게 되면 각종 테스트에 필요한 applicationContext 설정 파일을 테스트 클래스와 동일한 패키지/동일한 이름(-context.xml)으로 기본적으로 지정이 되기 때문에 불필요한 코딩이 좀 줄어드는 편입니다만, 자바 1.4를 주로 쓰다보니 그런 편리한 기능을 두고 매번 getConfigLocations를 만들고 있습니다.

뭐, 종종 하는 짓이긴 하지만 또 상속입니다. 다중 상속이 됐으면 한 판에 끝나겠지만 뭐 그냥 DI만 필요한 경우, 트랜젝션 관리도 필요한 경우, jdbcTemplate가 필요한 경우의 클래스들이 따로 따로 있기 때문에 각각 만들어놓고 쓰는 수고를 좀 해야겠지요 -_-

자바 1.4에서도 돌아갈 수 있는 스프링의 테스트용 추상 클래스 중에서 한 놈을 뽑아서 거기서 확장을 하겠습니다.
거기에 getConfigLocations를 정의해놓고, 생성자에 약간의 세팅만 해 주면 그나마 비슷한 분위기를 낼 수는 있습니다.
대강 보시면 아시겠지만 스프링에서 제공하는 ClassUtils 를 이용하였습니다.

public abstract class AbstractTests extends
        AbstractDependencyInjectionSpringContextTests {

    public AbstractTests () {
        setDependencyCheck(false);
    }
   
    protected String[] getConfigLocations() {
        return new String[] { ClassUtils.addResourcePathToPackagePath(getClass(), ClassUtils.getShortName(getClass())
                + "-context.xml") };
    }
}


이제 이 놈을 상속 받은 테스트 클래스들은 동일한 패키지 내에 "테스트클래스이름-context.xml" 파일을 만들어서 스프링 빈 설정을 하시면 되겠습니다. 애플리케이션 공통으로 쓰는 applicationContext.xml 파일 등등은 import 선언으로 가져와버리면 되겠죠.

1.4에서 하나 아쉬운 게 또 있다면 @autowired 를 쓸 수 없기 때문에 set메소드는 일일이 만들어줘야 된다는 점이 있습니다.


크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
author image
setq
2008/06/27 16:20 2008/06/27 16:20

(go to top)