2009년 12월 17일
서인영 '인영핑크'광고 비하인드 촬영 영상
# by | 2009/12/17 11:01 | 연애인 | 트랙백
# by | 2009/12/17 09:27 | 끝나지 않을 전쟁 : 여 vs 남 | 트랙백
리펙토링의 리듬
: 테스트 --> 조금수정 --> 테스트 --> 조금수정 ...
- 리펙토링 : 소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의변화 없이 내부 구조를 변경하는 것
- 개발자의 문제점 : 프로그램을 만들 때, 나중의 개발자에 대해 생각하지 않는다는 것이다. 코드를 더 쉽게 이해할 수 있도록 변경하기 위해서는 리듬의 변화가 필요하다.
- 나는 매우 게으른 프로그래머다. 나는 내가 작성한 코드도 기억을 못할 정도로 게으르다. 실은, 머리가 꽉 차버리는 것이 두려워, 찾아볼 수 있는 것은 일부러 기억하려 하지 않는다. 나는 나중에 기억할 필요가 없도록, 기억해야 할 모든것을 코드에 넣는다. 이런 방법으로 오래된 기억이 내 뇌세포를 죽이는 것에 대한 걱정을 덜 수 있다.
- "나는 훌륭한 프로그래머는 아니다. 그냥 훌륭한 습관을 가지고 있는 좋은 프로그래머다"
- 소프트웨어를 빨리 개발하는 데에는 좋은 디자인이 가장 중요하다고 강력하게 믿는다.
* 리펙토링이 작동하는 이유
- 읽기 어려운 프로그램은 수정하기 어렵다
- 중복된 로직을 가지고 있는 프로그램 수정하기 어렵다.
- 실행중인 코드를 변경해야 하는 특별한 동작을 요구하는 프로그램은 수정하기 어렵다.
- 복잡한 조건문이 포함된 프로그램은 수정하기 어렵다.
따라서, 우리는 읽기 쉽고, 모든 로직은 중복되지 않도록 한곳에서만 존재하고, 기존 동작을 위험에 빠뜨릴 변경을 허용하지 않으며, 조건 로직은 가능한 단순하게 표현되는 프로그램을 원한다.
# by | 2009/12/16 15:33 | Computer Technic | 트랙백
# by | 2009/12/16 00:55 | Computer Technic | 트랙백
cURL (Client URL Library Functions)
cURL로 가능한 일
cURL, Client URL Library Functions
[예제1 : POST방식으로 데이터 전송(simple)]
<?
$post_data = array(
"name" => "홍길동",
"birthday" => "1980-08-20"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, http://www.example.com);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_exec($ch);
?>
[예제2: POST방식으로 데이터 전송(function)]
<?
function fetch_page($url,$param,$cookies,$referer_url){
if(strlen(trim($referer_url)) == 0) $referer_url= $url;
$curlsession = curl_init ();
curl_setopt ($curlsession, CURLOPT_URL, \"$url\");
curl_setopt ($curlsession, CURLOPT_POST, 1);
curl_setopt ($curlsession, CURLOPT_POSTFIELDS, \"$param\");
curl_setopt ($curlsession, CURLOPT_POSTFIELDSIZE, 0);
curl_setopt ($curlsession, CURLOPT_TIMEOUT, 60);
if($cookies && $cookies!=\"\"){
curl_setopt ($curlsession, CURLOPT_COOKIE, \"$cookies\");
}
curl_setopt ($curlsession, CURLOPT_HEADER, 1); //헤더값을 가져오기위해 사용합니다. 쿠키를 가져오려고요.
curl_setopt ($curlsession, CURLOPT_USERAGENT, \"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\");
curl_setopt ($curlsession, CURLOPT_REFERER, \"$referer_url\");
ob_start();
$res = curl_exec ($curlsession);
$buffer = ob_get_contents();
ob_end_clean();
if (!$buffer) {
$returnVal = \"Curl Fetch Error : \".curl_error($curlsession);
}else{
$returnVal = $buffer;
}
curl_close($curlsession);
return $returnVal;
}
?>
[예제3 : 파일 전송]
<?
$post_data['data[0]'] = "@image/img_01.jpg";
$post_data['data[0]'] = "@image/img_02.jpg";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, http://www.example.com/upload.php);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$postResult = curl_exec($ch);
?>
[예제4 : https 접속]
<?
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,"https://www.test.com"); //접속할 URL 주소
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 인증서 체크같은데 true 시 안되는 경우가 많다.
// default 값이 true 이기때문에 이부분을 조심 (https 접속시에 필요)
curl_setopt ($ch, CURLOPT_SSLVERSION,3); // SSL 버젼 (https 접속시에 필요)
curl_setopt ($ch, CURLOPT_HEADER, 0); // 헤더 출력 여부
curl_setopt ($ch, CURLOPT_POST, 1); // Post Get 접속 여부
curl_setopt ($ch, CURLOPT_POSTFIELDS, "var1=str1&var2=str2"); // Post 값 Get 방식처럼적는다.
curl_setopt ($ch, CURLOPT_TIMEOUT, 30); // TimeOut 값
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); // 결과값을 받을것인지
$result = curl_exec ($ch);
curl_close ($ch);
echo $result;
?>
[예제5 : curl을 이용한 Gmail 로그인]
$src = "https://".$gmailId.":".$gmailPw."@mail.google.com/mail/feed/atom";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, 'My Agent Name');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$res = curl_exec($ch);
curl_close($ch);
/** 결과는 Atom xml 형식이다. DOM 또는 xml 파싱 function을 이용해서 파싱하면 됩니다. **/
echo $res;
?>
[예제6 : cURL을 이용한 웹페이지 가져오기]
<?php
function get_content($url) {
$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)';
$curlsession = curl_init ();
curl_setopt ($curlsession, CURLOPT_URL, $url);
curl_setopt ($curlsession, CURLOPT_HEADER, 0);
curl_setopt ($curlsession, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curlsession, CURLOPT_POST, 0);
curl_setopt ($curlsession, CURLOPT_USERAGENT, $agent);
curl_setopt ($curlsession, CURLOPT_REFERER, "");
curl_setopt ($curlsession, CURLOPT_TIMEOUT, 3);
$buffer = curl_exec ($curlsession);
$cinfo = curl_getinfo($curlsession);
curl_close($curlsession);
if ($cinfo['http_code'] != 200)
{
return "";
}
return $buffer;
}
?>
# by | 2009/12/15 17:19 | C/C++ 프로그래밍 | 트랙백
◀ 이전 페이지 다음 페이지 ▶