자유게시판

제목 오늘 헛발이님 질문에 답하다 보니까..
글쓴이 변종원(웅파) 작성시각 2010/01/20 12:46:18
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 14193   RSS
전에 하기로 했던 일중에 매뉴얼에 실행가능한 코드를 붙여서 매뉴얼 해당내용에 대한 실제 소스를 보여주고
실행까지 하게 하기로 한 것이 생각 났습니다. 거창하게 프로젝트로 진행할게 아니라 하루에 한개씩 작업을
하다보면 언젠가는 되겠지 하는 생각이 문득 들었습니다.

그리고 매뉴얼에 없는 내용도 있구요. 이런 부분은 매뉴얼 하단에 위키를 붙여서 보완을 하면 되겠구요(php.net 매뉴얼처럼)

동참하실 분?
꼭 하루에 한개가 아니더라도 시간이 될때 매뉴얼에 해당하는 샘플소스만 만들어주시면 됩니다.
그러면 matchbox 적용해서 디렉토리별로 올리고 매뉴얼에 링크 걸어주면 될 것 같습니다.
(하나씩 만들다보면 ci 기본 라이브러리, 헬퍼에 대한 것은 머릿속에 확실하게 각인되겠죠?)

자~ 저부터 시작합니다. 오늘은 벤치마킹 라이브러리부터...
 다음글 29일 모임에 대한 의견? (6)
 이전글 오늘 디자이너분이 회사를 그만두었네요 ㅠㅠ (4)

댓글

헛발이 / 2010/01/20 13:53:27 / 추천 0
저요저요~ 제가 동참 하죠 ㅋㅋ
어케 하면 되죠? ㅋㅋ
변종원(웅파) / 2010/01/20 15:36:44 / 추천 0
<?php
/**
 * 벤치마크 Benchmarking Class
 *
 * Created on 2010. 1. 20.
 * @author 웅파 <blumine@gmail.com>
 * @package library
 * @subpackage controllers
 * @version 1.0
 */

class Benchmark_lib extends Controller {

	function Benchmark_lib()
	{
		parent :: Controller();
	}

	function index() {
		//프로파일링 선언
		//시작점1 my_mark_start과 종료점1 my_mark_end의 실행시간을 프로파일러에 자동으로 보여줌
		//_start, _end 로 접미사를 달고 앞부분의 단어를 동일하게 사용하면 프로파일러에서 자동 노출
		$this->output->enable_profiler(TRUE);

		//시작점1 선언
		$this->benchmark->mark('my_mark_start');

		for($i=1;$i < 500; $i++) {
			echo $i."번 라인<br>";
		}
		//종료점1 선언
		$this->benchmark->mark('my_mark_end');

		//시작점2 선언
		$this->benchmark->mark('another_mark_start');

		for($j=1;$j < 300; $j++) {
			echo $j."번 라인<br>";
		}
		//종료점2 선언
		$this->benchmark->mark('another_mark_end');

		echo "<BR>";
		echo "<BR>";
		//시작점1과 종료점1 사이의 시간 측정
		echo "500번 반복시간 : ".$this->benchmark->elapsed_time('my_mark_start', 'my_mark_end');
		echo "<BR>";
		echo "<BR>";
		//시작점2과 종료점2 사이의 시간 측정
		echo "300번 반복시간 : ".$this->benchmark->elapsed_time('another_mark_start', 'another_mark_end');
		echo "<BR>";
		echo "<BR>";
		//Codeigniter 시작부터 최종 출력까지의 시간
		// 0.0708 축약형태도 가능
		echo "Codeigniter 시작부터 최종 출력까지의 시간 : ".$this->benchmark->elapsed_time();
		echo "<BR>";
		echo "<BR>";
		//PHP 가 --enable-memory-limit 설정(configured with --enable-memory-limit)과 함께 설치되었다면
		//축약코드 2.03MB
		echo "이 컨트롤러가 사용한 메모리 : ".$this->benchmark->memory_usage();
	}
}
변종원(웅파) / 2010/01/20 15:40:08 / 추천 0

http://codeigniter-kr.org/user_guide/libraries/benchmark.html
매뉴얼 주소가 위와 같으면 benchmakr_lib.php로 컨트롤러를 위와 같이 만드시면 됩니다.
매뉴얼의 파일명과 동일하게 만들고 라이브러리일 경우 _lib를 추가, 헬퍼일경우 _hlp, 일반일 경우 _gnl을 추가하여 컨트롤러명을 만드시면 됩니다.

위는 제가 매뉴얼 참고해서 만든겁니다. 매뉴얼상의 메소드 전부를 담고 있습니다.
이렇게 쭉 만들어놓으셨다가 저한테 보내주시거나 게시판에 압축해서 올려주시면 됩니다. ^^
감사합니다.

위 소스의 실제 링크는 http://codeigniter-kr.org/manual_source/benchmark_lib/ 입니다.

실제로 서비스할때는 상하단 프레임으로 나눠서 위 프레임은 소스, 아래 프레임은 실행내용 이렇게
보이게할 생각입니다.
 

변종원(웅파) / 2010/01/20 21:40:09 / 추천 0
http://codeigniter-kr.org/view_frame/index/benchmark

간단하게 하나 만들었습니다. 상단에는 소스가, 하단에는 실행된 예가 출력이 됩니다.
디자인 조금 손보고 iframe안에 전체 높이 맞춰주는 자바스크립트 하나 넣으면 될 것 같습니다.

추가

앞으로 작업하여 추가될 샘플페이지 모음 리스트입니다.
http://codeigniter-kr.org/sample_list/index/
변종원(웅파) / 2010/01/21 20:48:35 / 추천 0
그리 거창한 일은 아닌데 참여가 저조하네요. ^^;
오늘은 캘린더 작업예정입니다.
미드필드 / 2010/01/22 06:33:24 / 추천 0
<?
/**
 * HTML 테이블 Class
 *
 * Created on 2010. 1. 21.
 * @author 웅파 <blumine@gmail.com>
 * @package library
 * @subpackage controllers
 * @version 1.0
 */

class Table_lib extends Controller {

	function Table_lib()
	{
		parent :: Controller();
        $this->load->library('table');
	}

	function index() {
		
        $data = array(
                     array('Name', 'Color', 'Size'),
                     array('Fred', 'Blue', 'Small'),
                     array('Mary', 'Red', 'Large'),
                     array('John', 'Green', 'Medium')
                     );
        
        // example 1
        echo $this->table->generate($data);
        
        
        echo '<br /><br />';    
        echo '이번 예제는 데이터베이스 쿼리결과로 테이블을 만드는것을 보여줍니다.테이블 클래스는 테이블 이름들로부터 제목(heading)을 자동으로 설정합니다. set_heading() 함수를 이용하면 여러분이 직접 제목을 작성하실수도 있습니다.그 방법은 저 아래서 설명합니다.';
                
        $query = $this->db->query("SELECT * FROM my_table");
        echo $this->table->generate($query); 
        
        
        
        
        echo '<br /><br />';        
        echo '이번 예제는 각각의 파라미터를 이용해서 테이블을 만드는법을 보여줍니다';
        
                
        $this->table->set_heading('Name', 'Color', 'Size');
        
        $this->table->add_row('Fred', 'Blue', 'Small');
        $this->table->add_row('Mary', 'Red', 'Large');
        $this->table->add_row('John', 'Green', 'Medium');
        
        echo $this->table->generate();  
        
        
        
        echo '<br /><br />';
        echo '이번예제는 위와 유사하나 개별파라미터가 아닌 배열을 통해 테이블을 만드는법을 보여줍니다';
        
        $this->table->set_heading(array('Name', 'Color', 'Size'));

        $this->table->add_row(array('Fred', 'Blue', 'Small'));
        $this->table->add_row(array('Mary', 'Red', 'Large'));
        $this->table->add_row(array('John', 'Green', 'Medium'));
        
        echo $this->table->generate(); 
        
        echo '<br /><br />';
        echo '테이블 모양 바꾸기 Changing the Look of Your Table <br/>';
        echo '여러분이 원하는 레이아웃에 맞추어 테이블 템플릿을 설정할 수 있습니다. 아래는 기본적인 테이블 템플릿 설정 예제입니다';
        $tmpl = array (
                            'table_open'          => '<table border="1" cellpadding="4" cellspacing="0">',
        
                            'heading_row_start'   => '<tr>',
                            'heading_row_end'     => '</tr>',
                            'heading_cell_start'  => '<th>',
                            'heading_cell_end'    => '</th>',
        
                            'row_start'           => '<tr>',
                            'row_end'             => '</tr>',
                            'cell_start'          => '<td>',
                            'cell_end'            => '</td>',
        
                            'row_alt_start'       => '<tr>',
                            'row_alt_end'         => '</tr>',
                            'cell_alt_start'      => '<td>',
                            'cell_alt_end'        => '</td>',
        
                            'table_close'         => '</table>'
                      );
        
        $this->table->set_template($tmpl); 
        
        echo $this->table->generate();
	}}
이렇게 하는게 맞나요 ?
변종원(웅파) / 2010/03/02 14:50:26 / 추천 0
헉. 미드필드님이 하나 올려주셨는데 몰랐네요.
맞습니다. 그렇게 하시면 됩니다.
저녁에 등록하겠습니다.
감사합니다.