'전체'에 해당되는 글 278건
- 2011/11/24 웹로그 시각화 솔루션 - Logstalgia, website access log visualization
- 2011/11/17 [소셜(SNS)댓글] 싸이월드-C로그 연동 FAQ
- 2011/11/17 [소셜(SNS)댓글] 네이버 미투데이(me2day) 연동 FAQ
- 2011/11/17 [소셜(SNS)댓글] twitter 연동 FAQ
- 2011/11/17 [소셜(SNS)댓글] 다음 요즘(yozm) 연동 FAQ
- 2011/11/17 [소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제
- 2011/11/17 [소셜(SNS)댓글] facebook 연동 FAQ #1 - 페이스북 API 키 발급
- 2011/11/07 [리뷰] 자외선 살균기 퓨라이트 XD - 집먼지진드기, 각종 세균 살균! (1)
- 2011/09/27 [jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능)
- 2011/09/27 [Ajax] Microsoft.XMLHTTP(Ajax) - 서버 실시간 모니터링
웹로그 시각화 솔루션 - Logstalgia, website access log visualization


웹로그 시각화 솔루션 - Logstalgia, website access log visualization
Logstalgia (aka ApachePong) is a website access log visualization tool.
Logstalgia 는 웹로그를 시각화 하여 마치 핑퐁 게임을 보는듯한 시각영상을 제공합니다.
Description
Logstalgia is a website traffic visualization that replays or streams web-server access logs as a pong-like battle between the web server and an never ending torrent of requests.
Requests appear as colored balls (the same color as the host) which travel across the screen to arrive at the requested location. Successful requests are hit by the paddle while unsuccessful ones (eg 404 - File Not Found) are missed and pass through.
The paths of requests are summarized within the available space by identifying common path prefixes. Related paths are grouped together under headings. For instance, by default paths ending in png, gif or jpg are grouped under the heading Images. Paths that don’t match any of the specified groups are lumped together under a Miscellaneous section.
Requirements
Logstalgia requires a video card supporting OpenGL. For this reason you should typically run Logstalgia on your workstation rather than on the web-server itself (unless your workstation is the web-server).
As Logstalgia is designed to playback logs in real time you will need a log from a fairly busy web-server to achieve interesting results (eg 100s of requests each minute).
An example access log is included.
윈도우 / Mac / 리눅스용 프로그램을 제공하며,
웹서버에서 생성된 web log를 넣으면 아래와 같이
시각화 할 수 있습니다. 왼쪽의 공들이 사용자의 요청, 오른쪽 중간에 위아래로 움직이는 작은 상자가 서버의 처리 프로세서입니다.
오른쪽 아래의 큰 숫자 카운터는 서버로 들어온 요청수를 표시하고 있습니다.
'IT기술,개발 > 컴퓨터,IT정보' 카테고리의 다른 글
| 웹로그 시각화 솔루션 - Logstalgia, website access log visualization (0) | 2011/11/24 |
|---|---|
| DNSEver - DNS서버장애 (0) | 2011/08/27 |
| [olleh Skylife] 셋탑박스 교체, 삼성 DSB-5010N => LG LSH537-8DSL - 실시간ipTV, usb, 공유폴더 설정완료 (6) | 2011/04/07 |
| iPhone - 2기가 무료 웹하드, 드랍박스(windows, linux, mac, iPhone 지원) (6) | 2010/01/11 |
| DNS서버를 마음대로! 서브도메인과 메일서버를 무료로 사용하기 (75) | 2009/05/09 |
| 후지쯔가 공개한 보안 USB메모리, Fujitsu Develops Secure USB Memory Device Featuring Automatic Data-Erase Function (2) | 2009/04/19 |
| [이벤트] pe.kr 도메인을 무료로 드립니다. (0) | 2008/12/14 |
| 구글 지도 beta 서비스 - 속도에 놀라다! (0) | 2008/11/28 |
| 갑자기 텍스트큐브 파일업로드가 안되는 문제! - 플래쉬 ActiveX 점검 (8) | 2008/10/29 |
| 윈도우 화면보호기 - 멋진 플립시계 - xouClock 1.0 (4가지 버전) (2) | 2008/03/15 |
| 플립시계(쏘클락, XouClock) 내 블로그에 달기 (0) | 2008/03/15 |
--------------------------------------------------------------------------------------------------------
요즘 소셜(SNS)댓글 시스템이 커뮤니티 사이트에서 관심을 받고 있습니다.
이전에 IT관련 회사들은 어떻게 하면 회원가입률을 높일까를 고민하다 이제는 어떻게 하면 커뮤니티를 활성화 시킬 수 있을까로 고민이 바뀌고 있죠. 말 그대로 좋은 정보를 제공하는 것도 중요하지만, 방문자의 호응을 쉽게 이끌어내기 위한 노력으로 SNS 댓글시스템이 각광을 받고 있지 않나 싶습니다.
각 SNS(트위터, 페이스북, 미투데이, 요즘 등) 서비스들의 로그인 API연동에 대한 FAQ를 정리해보도록 하겠습니다.
개발하실 분들은 참조해서 도움이 되셨으면 좋겠습니다.
--------------------------------------------------------------------------------------------------------
싸이월드(네이트) - C로그의 경우 OAuth 라이브러리를 제공하므로 쉽게 연동이 가능합니다.
아래는 라이브러리를 바탕으로 만든 연동 API 샘플입니다.
우선 네이트 개발자센터(http://devsquare.nate.com/)를 통해 개발자등록을 하고 Consumer key 발급 신청합니다.
발급받은 키를 통해 아래 소스를 변경하여 적용합니다.
------------------
index.php
------------------
<?php
header("expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("pragma: no-cache");
$oauth_consumer_key = "발급받은 컨슈머 키"; // Your consumer key
$oauth_consumer_key_secret = "발급받은 컨슈머 키 암호"; // Your consumer key secret
$oauth_callback = "콜백URL/callback.php";// Your Call Back Page URL
$oauth_signature_method = "HMAC-SHA1";
$oauth_timestamp = time();
$oauth_nonce = md5(microtime().mt_rand()); // md5s look nicer than numbers;
$oauth_version = "1.0";
$get_request_token_url = "https://oauth.nate.com/OAuth/GetRequestToken/V1a";
$oauth_token = "";
$oauth_token_secret = "";
$oauth_signature = "";
$request_token = "";
$request_token_secret = "";
//Get Request Token
//Generate Base String For Get Request Token
//!!파라메터 이름 순서로 조합해야 한다.
//!!파라메터의 이름과 값은 rfc3986 으로 encode
//[Name=Valeu&Name=Value…] 형식으로 연결
$Query_String = urlencode_rfc3986("oauth_callback")."=".urlencode_rfc3986($oauth_callback);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_consumer_key")."=".urlencode_rfc3986($oauth_consumer_key);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_nonce")."=".urlencode_rfc3986($oauth_nonce);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_signature_method")."=".urlencode_rfc3986($oauth_signature_method);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_timestamp")."=".urlencode_rfc3986($oauth_timestamp);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_version")."=".urlencode_rfc3986($oauth_version);
//Base String 요소들을 rfc3986 으로 encode
$Base_String = urlencode_rfc3986("POST")."&".urlencode_rfc3986($get_request_token_url)."&".urlencode_rfc3986($Query_String);
//지금 단계에서는 $oauth_token_secret이 ""
$Key_For_Signing = urlencode_rfc3986($oauth_consumer_key_secret)."&".urlencode_rfc3986($oauth_token_secret);
//oauth_signature 생성
$oauth_signature=base64_encode(hash_hmac('sha1', $Base_String, $Key_For_Signing, true));
//Authorization Header 조합
$Authorization_Header = "Authorization: OAuth ";
$Authorization_Header .= urlencode_rfc3986("oauth_version")."=\"".urlencode_rfc3986($oauth_version)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_nonce")."=\"".urlencode_rfc3986($oauth_nonce)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_timestamp")."=\"".urlencode_rfc3986($oauth_timestamp)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_consumer_key")."=\"".urlencode_rfc3986($oauth_consumer_key)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_callback")."=\"".urlencode_rfc3986($oauth_callback)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_signature_method")."=\"".urlencode_rfc3986($oauth_signature_method)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_signature")."=\"".urlencode_rfc3986($oauth_signature)."\"";
$parsed = parse_url($get_request_token_url);
$scheme = $parsed["scheme"];
$path = $parsed["path"];
$ip = $parsed["host"];
$port = @$parsed["port"];
if ($scheme == "http") {
if(!isset($parsed["port"])) { $port = "80"; } else { $port = $parsed["port"]; };
$tip = $ip;
} else if ($scheme == "https") {
if(!isset($parsed["port"])) { $port = "443"; } else { $port = $parsed["port"]; };
$tip = "ssl://" . $ip;
}
$timeout = 5;
$error = null;
$errstr = null;
//Request 만들기
$out = "POST " . $path . " HTTP/1.1\r\n";
$out .= "Host: ". $ip . "\r\n";
$out .= $Authorization_Header . "\r\n";
$out .= "Accept-Language: ko\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Content-Length: 0\r\n\r\n"; //Request Token 받기에서는 post body에 들어가는 파라메터가 없어서 0
//Request 보내기
$fp = fsockopen($tip, $port, $errno, $errstr, $timeout);
//Reponse 받기
if (!$fp) {
Message("연동중 API오류가 발생하였습니다. 다시 시도해주세요.", "close");
} else {
fwrite($fp, $out);
$response = "";
while ($s = fread($fp, 4096)) {
$response .= $s;
}
//Response Header와 Body 분리
$bi = strpos($response, "\r\n\r\n");
$body = substr($response, $bi+4);
//정상적인 경우 $body값은
//oauth_token=5a3377a10ad1f2c937e7bd8c83e57bec&oauth_token_secret=5be6580cc3e8ea2c71a1c56106c19c1f&oauth_callback_ctrue
//의 형식으로 떨어짐.
$tmpArray = explode("&",$body);
$TokenArray = explode("=",$tmpArray[0]);
$TokenSCArray = explode("=",$tmpArray[1]);
$request_token = $TokenArray[1];
$request_token_secret = $TokenSCArray[1];
//request_token, request_token_secret 세션에 저장
$_SESSION['oauth_request_token'] = trim($request_token);
$_SESSION['oauth_request_token_secret'] = trim($request_token_secret);
}
//Redirect to Authorize URL
//다음 단계인 Nate Login을 위해 페이지 이동
$Authorize_URL = "https://oauth.nate.com/OAuth/Authorize/V1a?oauth_token=".$request_token;
Header("Location: $Authorize_URL");
function urlencode_rfc3986($input) {
if (is_scalar($input)) {
return str_replace(
'+',
' ',
str_replace('%7E', '~', rawurlencode($input))
);
} else {
return '';
}
}
?>
-------------------------
callback.php
-------------------------
<?php
header("expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("pragma: no-cache");
include_once $g_Path_System . "/@inc/xml_parser_php5.php";
$oauth_consumer_key = "발급받은 컨슈머 키"; // Your consumer key
$oauth_consumer_key_secret = "발급받은 컨슈머 키 암호"; // Your consumer key secret
$oauth_callback = "콜백URL/callback.php";// Your Call Back Page URL
$callBackToken = $_REQUEST["oauth_token"];
$oauth_verifier= $_REQUEST["oauth_verifier"];
$request_token = $callBackToken;
$request_token_secret = "";
// 저장된 세션토큰과 전달받은 토큰 유효성 검사
$oauth_request_token = trim($_SESSION['oauth_request_token']);
$oauth_request_token_secret = trim($_SESSION['oauth_request_token_secret']);
if($oauth_request_token == $request_token && $oauth_request_token_secret != "") {
$request_token_secret = $oauth_request_token_secret;
} else {
Message("연동중 API오류가 발생하였습니다. 다시 시도해주세요.", "close");
}
//미리 request_token,request_token_secret를 저장 해 두었으로 매치되는 request_token_secret를 확보
$oauth_signature_method = "HMAC-SHA1";
$oauth_timestamp = time();
$oauth_nonce = md5(microtime().mt_rand()); // md5s look nicer than numbers;
$oauth_version = "1.0";
$get_access_token_url = "https://oauth.nate.com/OAuth/GetAccessToken/V1a";
$access_token = "";
$access_token_secret = "";
//Get Access Token
//Generate Base String For Get Access Token
//!!파라메터 이름 순서로 조합해야 한다.
//!!파라메터의 이름과 값은 rfc3986 으로 encode
//[Name=Valeu&Name=Value…] 형식으로 연결
$Query_String = urlencode_rfc3986("oauth_consumer_key")."=".urlencode_rfc3986($oauth_consumer_key);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_nonce")."=".urlencode_rfc3986($oauth_nonce);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_signature_method")."=".urlencode_rfc3986($oauth_signature_method);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_timestamp")."=".urlencode_rfc3986($oauth_timestamp);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_token")."=".urlencode_rfc3986($request_token);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_verifier")."=".urlencode_rfc3986($oauth_verifier);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_version")."=".urlencode_rfc3986($oauth_version);
//Base String 요소들을 rfc3986 으로 encode
$Base_String = urlencode_rfc3986("POST")."&".urlencode_rfc3986($get_access_token_url)."&".urlencode_rfc3986($Query_String);
//지금 단계에서는 $oauth_token_secret에 request_token_secret을 사용
$Key_For_Signing = urlencode_rfc3986($oauth_consumer_key_secret)."&".urlencode_rfc3986($request_token_secret);
//oauth_signature 생성
$oauth_signature = base64_encode(hash_hmac('sha1', $Base_String, $Key_For_Signing, true));
//Authorization Header 조합
$Authorization_Header = "Authorization: OAuth ";
$Authorization_Header .= urlencode_rfc3986("oauth_version")."=\"".urlencode_rfc3986($oauth_version)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_nonce")."=\"".urlencode_rfc3986($oauth_nonce)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_timestamp")."=\"".urlencode_rfc3986($oauth_timestamp)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_consumer_key")."=\"".urlencode_rfc3986($oauth_consumer_key)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_token")."=\"".urlencode_rfc3986($request_token)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_verifier")."=\"".urlencode_rfc3986($oauth_verifier)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_signature_method")."=\"".urlencode_rfc3986($oauth_signature_method)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_signature")."=\"".urlencode_rfc3986($oauth_signature)."\"";
$parsed = parse_url($get_access_token_url);
$scheme = $parsed["scheme"];
$path = $parsed["path"];
$ip = $parsed["host"];
$port = @$parsed["port"];
if ($scheme == "http") {
if(!isset($parsed["port"])) { $port = "80"; } else { $port = $parsed["port"]; };
$tip = $ip;
} else if ($scheme == "https") {
if(!isset($parsed["port"])) { $port = "443"; } else { $port = $parsed["port"]; };
$tip = "ssl://" . $ip;
}
$timeout = 5;
$error = null;
$errstr = null;
//Request 만들기
$out = "POST " . $path . " HTTP/1.1\r\n";
$out .= "Host: ". $ip . "\r\n";
$out .= $Authorization_Header . "\r\n";
$out .= "Accept-Language: ko\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Content-Length: 0\r\n\r\n"; //Request Token 받기에서는 post body에 들어가는 파라메터가 없어서 0
//Request 보내기
$fp = fsockopen($tip, $port, $errno, $errstr, $timeout);
//Reponse 받기
if (!$fp) {
Message("연동중 API오류가 발생하였습니다. 다시 시도해주세요.", "close");
} else {
fwrite($fp, $out);
$response = "";
while ($s = fread($fp, 4096)) {
$response .= $s;
}
//Response Header와 Body 분리
$bi = strpos($response, "\r\n\r\n");
$body = substr($response, $bi+4);
//정상적인 경우 $body값은
//oauth_token=d934cf945ee6f6bdfb65865f1c1d116a&oauth_token_secret=9a024ddded7a188790796bb9be32f4e5
//의 형식으로 떨어짐.
$tmpArray = explode("&",$body);
$TokenArray = explode("=",$tmpArray[0]);
$TokenSCArray = explode("=",$tmpArray[1]);
$access_token = $TokenArray[1];
$access_token_secret = $TokenSCArray[1];
//access_token, access_token_secret 출력
// echo ("access_token = ".$access_token."<br />");
// echo ("access_token_secret = ".$access_token_secret."<br />");
/* If HTTP response is 200 continue otherwise send to connect page to retry */
if ($access_token != "" && $access_token_secret != "") {
/* The user has been verified and the access tokens can be saved for future use */
// C로그 사용자 정보 불러오기 ---------------------------------------------------------------
$oauth_timestamp = time();
$oauth_nonce = md5(microtime().mt_rand()); // md5s look nicer than numbers;
$get_clog_user_info_url = "https://openapi.nate.com/OApi/RestApiSSL/CY/200800/gethomeinfo/v1";
$menuType="1";
//조회대상 미니홈피 아이디는 일촌 API로 확보 가능합니다.
$targetId="";//공백으로 두면 Access Token 소유자의 미니 홈피를 조회합니다.
//Generate Base String For Get Access Token
//!!파라메터 이름 순서로 조합해야 한다.
//!!파라메터의 이름과 값은 rfc3986 으로 encode
//[Name=Valeu&Name=Value…] 형식으로 연결
$Query_String = urlencode_rfc3986("oauth_consumer_key")."=".urlencode_rfc3986($oauth_consumer_key);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_nonce")."=".urlencode_rfc3986($oauth_nonce);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_signature_method")."=".urlencode_rfc3986($oauth_signature_method);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_timestamp")."=".urlencode_rfc3986($oauth_timestamp);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_token")."=".urlencode_rfc3986($access_token);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("oauth_version")."=".urlencode_rfc3986($oauth_version);
$Query_String .= "&";
$Query_String .= urlencode_rfc3986("targetId")."=".urlencode_rfc3986($targetId);
//Base String 구성 요소를 &로 연결
$Base_String = urlencode_rfc3986("POST")."&".urlencode_rfc3986($get_clog_user_info_url)."&".urlencode_rfc3986($Query_String);
//지금 단계에서는 $oauth_token_secret에 request_token_secret을 사용
$Key_For_Signing = urlencode_rfc3986($oauth_consumer_key_secret)."&".urlencode_rfc3986($access_token_secret);
//oauth_signature 생성
$oauth_signature=base64_encode(hash_hmac('sha1', $Base_String, $Key_For_Signing, true));
//Authorization Header 조합
$Authorization_Header = "Authorization: OAuth ";
$Authorization_Header .= urlencode_rfc3986("oauth_version")."=\"".urlencode_rfc3986($oauth_version)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_nonce")."=\"".urlencode_rfc3986($oauth_nonce)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_timestamp")."=\"".urlencode_rfc3986($oauth_timestamp)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_consumer_key")."=\"".urlencode_rfc3986($oauth_consumer_key)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_token")."=\"".urlencode_rfc3986($access_token)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_signature_method")."=\"".urlencode_rfc3986($oauth_signature_method)."\",";
$Authorization_Header .= urlencode_rfc3986("oauth_signature")."=\"".urlencode_rfc3986($oauth_signature)."\"";
$parsed = parse_url($get_clog_user_info_url);
$scheme = $parsed["scheme"];
$path = $parsed["path"];
$ip = $parsed["host"];
$port = @$parsed["port"];
$queryStr="targetId=".$targetId;
$queryLength = (strlen($queryStr));
if ($scheme == "http") {
if(!isset($parsed["port"])) { $port = "80"; } else { $port = $parsed["port"]; };
$tip = $ip;
} else if ($scheme == "https") {
if(!isset($parsed["port"])) { $port = "443"; } else { $port = $parsed["port"]; };
$tip = "ssl://" . $ip;
}
$timeout = 5;
$error = null;
$errstr = null;
//Request 만들기
$out = "POST " . $path . " HTTP/1.1\r\n";
$out .= "Host: ". $ip . "\r\n";
$out .= $Authorization_Header . "\r\n";
$out .= "Accept-Language: ko\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Content-Length: " . $queryLength . "\r\n\r\n";
$out .= $queryStr;
//echo("Request=".$out."<br />");
//exit;
//Request 보내기
$fp = fsockopen($tip, $port, $errno, $errstr, $timeout);
//Reponse 받기
if (!$fp) {
Message("연동중 API오류가 발생하였습니다. 다시 시도해주세요.", "close");
} else {
fwrite($fp, $out);
$response = "";
while ($s = fread($fp, 4096)) {
$response .= $s;
}
//echo("resp".$response."<br />");
//exit;
//Response Header와 Body 분리
$bi = strpos($response, "\r\n\r\n");
$body = substr($response, $bi+4);
$parser = new XMLParser($body); // 객체생성 parser라는 객체를 생성함
$parser->Parse(); // Parse()메소를 호출하여 xml을 dom 방식으로 파싱함
$rcode = $parser->document->rcode[0]->tagData;
$rmsg = $parser->document->rmsg[0]->tagData;
if($rcode == "RET0000") {
$nickname = $parser->document->name[0]->tagData;
$url_name = $parser->document->id[0]->tagData;
$profile_img_url_tmp = explode("<profileUrl><![CDATA[", $body);
$profile_img_url_tmp2 = explode("]]></profileUrl>", $profile_img_url_tmp[1]);
$profile_img_url = $profile_img_url_tmp2[0];
// 넘어온 인증정보를 통해 서버에 로그인 인증정보를 심기!
// 자체 프로그램 소스처리(DB를 저장하든, 세션으로 저장하든)
// ......
// ---------------------------------------------------
} else {
switch($rcode) {
case "RET0002" :
case "RET301" :
Message("싸이월드 \'ⓒ로그\'가 개설되어있지 않습니다. \\n 개설 후 이용하실 수 있습니다.", "close");
break;
default :
Message("[ {$rcode} / {$rmsg} ]\\n SNS로그인 연동을 진행할 수 없습니다. \\n 연동을 위해 싸이월드 \'ⓒ로그\'가 개설되어 있어야 합니다.", "close");
break;
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta c"text/html; charset=utf-8" http-equiv="Content-Type" />
</head>
<body>
<script>
opener.location.reload();
self.close();
</script>
</body>
</html>
<?
} else {
/* Save HTTP status for error dialog on connnect page.*/
Message("연동중 API오류가 발생하였습니다. 다시 시도해주세요.", "close");
}
}
function urlencode_rfc3986($input) {
if (is_scalar($input)) {
return str_replace(
'+',
' ',
str_replace('%7E', '~', rawurlencode($input))
);
} else {
return '';
}
}
?>
'IT기술,개발 > 웹프로그래밍' 카테고리의 다른 글
| [소셜(SNS)댓글] 싸이월드-C로그 연동 FAQ (0) | 2011/11/17 |
|---|---|
| [소셜(SNS)댓글] 네이버 미투데이(me2day) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] twitter 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] 다음 요즘(yozm) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제 (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #1 - 페이스북 API 키 발급 (0) | 2011/11/17 |
| [jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능) (0) | 2011/09/27 |
| [Ajax] Microsoft.XMLHTTP(Ajax) - 서버 실시간 모니터링 (0) | 2011/09/27 |
| [MYSQL] mysql data type (DB 데이터 타입) (0) | 2011/09/27 |
| [Linux] 아파치 웹로그분석툴 webalizer 설치 (0) | 2011/03/31 |
| crontab(cronjob) 스케쥴, php관리툴 응용제어 (0) | 2011/03/23 |
--------------------------------------------------------------------------------------------------------
요즘 소셜(SNS)댓글 시스템이 커뮤니티 사이트에서 관심을 받고 있습니다.
이전에 IT관련 회사들은 어떻게 하면 회원가입률을 높일까를 고민하다 이제는 어떻게 하면 커뮤니티를 활성화 시킬 수 있을까로 고민이 바뀌고 있죠. 말 그대로 좋은 정보를 제공하는 것도 중요하지만, 방문자의 호응을 쉽게 이끌어내기 위한 노력으로 SNS 댓글시스템이 각광을 받고 있지 않나 싶습니다.
각 SNS(트위터, 페이스북, 미투데이, 요즘 등) 서비스들의 로그인 API연동에 대한 FAQ를 정리해보도록 하겠습니다.
개발하실 분들은 참조해서 도움이 되셨으면 좋겠습니다.
--------------------------------------------------------------------------------------------------------
네이버 미투데이는 OAuth를 사용치 않고 자체 간편인증을 사용합니다.
일단 애플리케이션 키 요청 http://me2day.net/me2/app/get_appkey
- 키값발급 및 callback 설정
프로그램으로
------
$akey = "발급받은 키값";
http://me2day.net/api/get_auth_url.xml?akey=".$akey
------
의 형태로 값을 전달하면 로그인 인증창의 URL을 토큰키와 같이 돌려줍니다.
돌려받은 url로 리다이렉트 시킨 후 토큰과 결과, 사용자 정보를 callback 에서 검사후 사용하면 완료~
-----------------
index.php
-----------------
<?php
header("expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("pragma: no-cache");
$akey = '발급받은 앱키";
$callback_url = '콜백URL/callback.php';
$response = http("http://me2day.net/api/get_auth_url.xml?akey=".$akey);
$get_url_tmp = explode("<url>", $response);
$get_url_tmp2 = $get_url_tmp[1];
$get_url_tmp3 = explode("</url>", $get_url_tmp2);
$url = $get_url_tmp3[0];
header('Location:'.$url);
function http($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close ($ch);
return $response;
}
?>
--------------------
callback.php
--------------------
<?php
header("expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("pragma: no-cache");
include_once $g_Path_System . "/@inc/xml_parser_php5.php";
/**
* @file
* Take the user when they return from Twitter. Get access tokens.
* Verify credentials and redirect to based on response from Twitter.
*/
/* Start session and load lib */
$auth_token = ifilter($_REQUEST['token'], "STRING", 100);
$auth_result = ifilter($_REQUEST['result'], "STRING", 20);
$auth_user_id = ifilter($_REQUEST['user_id'], "STRING", 50);
$auth_user_key = ifilter($_REQUEST['user_key'], "STRING", 50);
$response = http("http://me2day.net/api/get_person/".$auth_user_id);
$parser = new XMLParser($response); // 객체생성 parser라는 객체를 생성함
$parser->Parse(); // Parse()메소를 호출하여 xml을 dom 방식으로 파싱함
$nickname = $parser->document->nickname[0]->tagData;
$profile_img_url = $parser->document->face[0]->tagData;
if(isset($auth_token) && isset($auth_result) && $auth_result == "true") {
/* The user has been verified and the access tokens can be saved for future use */
// 넘어온 인증정보를 통해 서버에 로그인 인증정보를 심기!
// 자체 프로그램 소스처리(DB를 저장하든, 세션으로 저장하든)
// ......
// ---------------------------------------------------
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta c"text/html; charset=utf-8" http-equiv="Content-Type" />
</head>
<body>
<script>
opener.location.reload();
self.close();
</script>
</body>
</html>
<?
} else {
/* Save HTTP status for error dialog on connnect page.*/
// header('Location: ./clearsessions.php');
Message("연동중 API오류가 발생하였습니다. 다시 시도해주세요.", "close");
}
function http($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close ($ch);
return $response;
}
?>
'IT기술,개발 > 웹프로그래밍' 카테고리의 다른 글
| [소셜(SNS)댓글] 싸이월드-C로그 연동 FAQ (0) | 2011/11/17 |
|---|---|
| [소셜(SNS)댓글] 네이버 미투데이(me2day) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] twitter 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] 다음 요즘(yozm) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제 (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #1 - 페이스북 API 키 발급 (0) | 2011/11/17 |
| [jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능) (0) | 2011/09/27 |
| [Ajax] Microsoft.XMLHTTP(Ajax) - 서버 실시간 모니터링 (0) | 2011/09/27 |
| [MYSQL] mysql data type (DB 데이터 타입) (0) | 2011/09/27 |
| [Linux] 아파치 웹로그분석툴 webalizer 설치 (0) | 2011/03/31 |
| crontab(cronjob) 스케쥴, php관리툴 응용제어 (0) | 2011/03/23 |
--------------------------------------------------------------------------------------------------------
요즘 소셜(SNS)댓글 시스템이 커뮤니티 사이트에서 관심을 받고 있습니다.
이전에 IT관련 회사들은 어떻게 하면 회원가입률을 높일까를 고민하다 이제는 어떻게 하면 커뮤니티를 활성화 시킬 수 있을까로 고민이 바뀌고 있죠. 말 그대로 좋은 정보를 제공하는 것도 중요하지만, 방문자의 호응을 쉽게 이끌어내기 위한 노력으로 SNS 댓글시스템이 각광을 받고 있지 않나 싶습니다.
각 SNS(트위터, 페이스북, 미투데이, 요즘 등) 서비스들의 로그인 API연동에 대한 FAQ를 정리해보도록 하겠습니다.
개발하실 분들은 참조해서 도움이 되셨으면 좋겠습니다.
--------------------------------------------------------------------------------------------------------
https://dev.twitter.com/ 개발계정 등록
- 어플리케이션을 등록
- Consumer key와 Consumer secret 발급
https://github.com/abraham/twitteroauth (curl 함수 필요)
다운로드 후 서버경로에 설치 후
config.php 파일 재설정 후 connect.php 실행
참고 사이트
https://dev.twitter.com/docs/auth/oauth
http://www.slideshare.net/episod/linkedin-oauth-zero-to-hero
http://ko.wikipedia.org/wiki/OAuth
'IT기술,개발 > 웹프로그래밍' 카테고리의 다른 글
| [소셜(SNS)댓글] 싸이월드-C로그 연동 FAQ (0) | 2011/11/17 |
|---|---|
| [소셜(SNS)댓글] 네이버 미투데이(me2day) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] twitter 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] 다음 요즘(yozm) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제 (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #1 - 페이스북 API 키 발급 (0) | 2011/11/17 |
| [jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능) (0) | 2011/09/27 |
| [Ajax] Microsoft.XMLHTTP(Ajax) - 서버 실시간 모니터링 (0) | 2011/09/27 |
| [MYSQL] mysql data type (DB 데이터 타입) (0) | 2011/09/27 |
| [Linux] 아파치 웹로그분석툴 webalizer 설치 (0) | 2011/03/31 |
| crontab(cronjob) 스케쥴, php관리툴 응용제어 (0) | 2011/03/23 |
--------------------------------------------------------------------------------------------------------
요즘 소셜(SNS)댓글 시스템이 커뮤니티 사이트에서 관심을 받고 있습니다.
이전에 IT관련 회사들은 어떻게 하면 회원가입률을 높일까를 고민하다 이제는 어떻게 하면 커뮤니티를 활성화 시킬 수 있을까로 고민이 바뀌고 있죠. 말 그대로 좋은 정보를 제공하는 것도 중요하지만, 방문자의 호응을 쉽게 이끌어내기 위한 노력으로 SNS 댓글시스템이 각광을 받고 있지 않나 싶습니다.
각 SNS(트위터, 페이스북, 미투데이, 요즘 등) 서비스들의 로그인 API연동에 대한 FAQ를 정리해보도록 하겠습니다.
개발하실 분들은 참조해서 도움이 되셨으면 좋겠습니다.
--------------------------------------------------------------------------------------------------------
다음의 경우 OAuth 를 지원하기때문에 작업이 용이합니다.
Daum OAuth Library for PHP
http://github.com/azki/Daum-OAuth
해당 라이브러리를 다운받아 API인증을 받은 후 이용해서 callback 부분만 수정해서 사용하면 됩니다.
'IT기술,개발 > 웹프로그래밍' 카테고리의 다른 글
| [소셜(SNS)댓글] 싸이월드-C로그 연동 FAQ (0) | 2011/11/17 |
|---|---|
| [소셜(SNS)댓글] 네이버 미투데이(me2day) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] twitter 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] 다음 요즘(yozm) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제 (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #1 - 페이스북 API 키 발급 (0) | 2011/11/17 |
| [jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능) (0) | 2011/09/27 |
| [Ajax] Microsoft.XMLHTTP(Ajax) - 서버 실시간 모니터링 (0) | 2011/09/27 |
| [MYSQL] mysql data type (DB 데이터 타입) (0) | 2011/09/27 |
| [Linux] 아파치 웹로그분석툴 webalizer 설치 (0) | 2011/03/31 |
| crontab(cronjob) 스케쥴, php관리툴 응용제어 (0) | 2011/03/23 |
[소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제

--------------------------------------------------------------------------------------------------------
요즘 소셜(SNS)댓글 시스템이 커뮤니티 사이트에서 관심을 받고 있습니다.
이전에 IT관련 회사들은 어떻게 하면 회원가입률을 높일까를 고민하다 이제는 어떻게 하면 커뮤니티를 활성화 시킬 수 있을까로 고민이 바뀌고 있죠. 말 그대로 좋은 정보를 제공하는 것도 중요하지만, 방문자의 호응을 쉽게 이끌어내기 위한 노력으로 SNS 댓글시스템이 각광을 받고 있지 않나 싶습니다.
각 SNS(트위터, 페이스북, 미투데이, 요즘 등) 서비스들의 로그인 API연동에 대한 FAQ를 정리해보도록 하겠습니다.
개발하실 분들은 참조해서 도움이 되셨으면 좋겠습니다.
--------------------------------------------------------------------------------------------------------
페이스북 개발자 계정신청하고 기본 api 호출문으로 호출시 발생되는 상황대처법이다.
file_get_contents() 함수문제
[ 아래는 facebook 에서 제공하는 기본 api호출문 알리고리즘 ]
<?php
$app_id = "YOUR_APP_ID";
$app_secret = "YOUR_APP_SECRET";
$my_url = "YOUR_URL";
session_start();
$code = $_REQUEST["code"];
if(empty($code)) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
. $_SESSION['state'];
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
if($_REQUEST['state'] == $_SESSION['state']) {
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret . "&code=" . $code;
$response = file_get_contents($token_url); // <--- file_get_contents 이 함수
$params = null;
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token="
. $params['access_token'];
$user = json_decode(file_get_contents($graph_url));
echo("Hello " . $user->name);
}
else {
echo("The state does not match. You may be a victim of CSRF.");
}
?>
Warning:
file_get_contents(https://graph.facebook.com/oauth/access_token?client_id=163002433768527&redirect_uri=http%3A%2F%2F211.242.255.46%3A81%2FAdmin%2FFtc_Manager%2FNew_Board%2Fview.php%3Fno%3D22%26cpage%3D1&client_secret=05f3f6baa5f3f5fa0985ea0d860cce53&code=Y4pqWCC_7Zsremr_dSHu7dzIWbfXBL91SnHDR4OvXVo.eyJpdiI6Im4tN2NfWnhNSGpGSlFXakNRSlp2RXcifQ.q26b7Al9E1PJWXlK02IzU0A7oTbQNduqUNXna6Ve7U5JCDxPnlSAY21c0GYDMQY_glFHu-rTw_PfqMHtr_SjkxxA8TLoIM35CZYtN2C_dvSSoTwJ1LjyJQGZ-eBtzAIl) [function.file-get-contents]:
file_get_contents 함수의 경우 보안상 서버설정에서 차단하는 경우가 많은데
이때는 하나의 기능을 위해 해당 함수를 풀지말고
socket 이나 curl 을 이용해 대처하면 된다.
<?
function http($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close ($ch);
return $response;
}
?>
위와같은 펑션을 추가하고 file_get_contents를 http()함수로 교체하면 해결~!
'IT기술,개발 > 웹프로그래밍' 카테고리의 다른 글
| [소셜(SNS)댓글] 싸이월드-C로그 연동 FAQ (0) | 2011/11/17 |
|---|---|
| [소셜(SNS)댓글] 네이버 미투데이(me2day) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] twitter 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] 다음 요즘(yozm) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제 (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #1 - 페이스북 API 키 발급 (0) | 2011/11/17 |
| [jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능) (0) | 2011/09/27 |
| [Ajax] Microsoft.XMLHTTP(Ajax) - 서버 실시간 모니터링 (0) | 2011/09/27 |
| [MYSQL] mysql data type (DB 데이터 타입) (0) | 2011/09/27 |
| [Linux] 아파치 웹로그분석툴 webalizer 설치 (0) | 2011/03/31 |
| crontab(cronjob) 스케쥴, php관리툴 응용제어 (0) | 2011/03/23 |
--------------------------------------------------------------------------------------------------------
요즘 소셜(SNS)댓글 시스템이 커뮤니티 사이트에서 관심을 받고 있습니다.
이전에 IT관련 회사들은 어떻게 하면 회원가입률을 높일까를 고민하다 이제는 어떻게 하면 커뮤니티를 활성화 시킬 수 있을까로 고민이 바뀌고 있죠. 말 그대로 좋은 정보를 제공하는 것도 중요하지만, 방문자의 호응을 쉽게 이끌어내기 위한 노력으로 SNS 댓글시스템이 각광을 받고 있지 않나 싶습니다.
각 SNS(트위터, 페이스북, 미투데이, 요즘 등) 서비스들의 로그인 API연동에 대한 FAQ를 정리해보도록 하겠습니다.
개발하실 분들은 참조해서 도움이 되셨으면 좋겠습니다.
--------------------------------------------------------------------------------------------------------
이 문제로 약 1주일 가량 삽질을 했었습니다. 내용인 즉 정상적인 페이스북 계정을 개설하고, 친구추가와 포스팅을 2주가량 해오던 극히 정상적인 계정으로 개발자 센터에서 API 키를 발급신청했다.
돌아오는 메세지는...
------------------
You can no longer create apps because our systems indicated that your account may not be authentic. Facebook requires users to provide their real first and last names, and fake accounts are a violation of our Statement of Rights and Responsibilities (SRR 4.1), even when used to host or test apps. Also note that maintaining multiple accounts, even if they are authentic, is also prohibited. If you would like to create a test user to test app functionality, you can do so here: http://developers.facebook.com/docs/test_users/.
--------------------
가짜계정으로 의심되므로 테스트를 위해서는 테스트유저 계정을 이용하라는...
또 글을 쓰고 페이스북 활동을 하고 다시 신청해도 마찬가지...
대다수의 개발자 계정 신청시 아무런 문제가 없지만 구글링 해 본 결과 극히 일부에서만 벌어지는 현상이다.
일부 답변중 계정정보에 실명을 사용하라, 핸드폰 인증을 받아라....고 되어 있지만 그렇게 해도 해결되지 않는다...
해결방법: ISP - IP대역을 바꾸어 신청하면 깔끔하게 해결된다.
회사에서 사용하는 IP대역 2개로 해결되지 않아서, 새벽에 혹시나 집에있는 PC로 신청하니... 한방에 해결됨. --;
이 문제로 골치아픈 개발자들은 한번 시도해 보시길 바랍니다.
'IT기술,개발 > 웹프로그래밍' 카테고리의 다른 글
| [소셜(SNS)댓글] 싸이월드-C로그 연동 FAQ (0) | 2011/11/17 |
|---|---|
| [소셜(SNS)댓글] 네이버 미투데이(me2day) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] twitter 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] 다음 요즘(yozm) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제 (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #1 - 페이스북 API 키 발급 (0) | 2011/11/17 |
| [jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능) (0) | 2011/09/27 |
| [Ajax] Microsoft.XMLHTTP(Ajax) - 서버 실시간 모니터링 (0) | 2011/09/27 |
| [MYSQL] mysql data type (DB 데이터 타입) (0) | 2011/09/27 |
| [Linux] 아파치 웹로그분석툴 webalizer 설치 (0) | 2011/03/31 |
| crontab(cronjob) 스케쥴, php관리툴 응용제어 (0) | 2011/03/23 |
가끔 매스컴에 집먼지진드기의 유해성과 알레르기 질환에 대해 나올때마다 어떻게 하나.. 걱정만 했었는데
집에 아기가 생겨 집청소할때 깨끗하게 살균할 방법이 없을까 하고 고심하던 끝에 이 제품을 알게되었고, 계속해서 정보를 찾다보니 비염이 있는 아내때문에라도 꼭 있어야겠구나 마음먹고 구매를 결심했습니다.
집먼지진드기? 과연 어떤 놈일까요?
꼭 이 제품이 아니더라도 왜 집안환경을 깨끗히 해야 하는지 정도만 알고 계신다는 생각으로 대응하시면 좋을 것 같습니다.
자~ 잘 읽어보셨나요? 눈에 보이지는 않지만 생긴 것부터가 무시무시하게 생겼죠?
저의 경우는 지난 9월 중순쯤 퓨라이트 XD를 구매했습니다. 이제 딱 한달 반정도 써본 것 같네요.
계속해서 리뷰를 써야지 하다가 오늘에서야 쓰게됐네요. 원래는 매트리스 자외선 살균기를 살까 아니면 이 제품을 살까 계속 고민을 하다가 매트리스 살균/진공청소기는 이불이나 매트리스에만 국한되어 사용되는 것보다, 여러모로 활용범위가 넓은 퓨라이트를 선택했습니다. (물론 퓨라이트의 경우 이불 살균 후에 밖에서 한번 털어주거나 진공청소기로 한번 더 청소해줘야 하는 번거로움은 있습니다. 이 부분때문에 오래도록 어떤 제품을 선택해야 할지 고민했답니다)
자~ 그럼 제품스팩에 대해 알아볼까요? 일단 제가 가지고 있는 XD 모델을 중점적으로 다뤄보도록 하겠습니다.
제품을 바로 받아보고 20분정도 사용했는데... 친절하게도 미리 배터리가 충전되어 있네요. ^^
제조사의 광고에 따르면 10~20초만 비춰도 99.9% 살균이 된다고 하니... 참고하시기 바랍니다.
제품이 도착하자마자 사진을 찍어뒀습니다. (사진은 구매후 택배 도착하자 마자 찍은 사진들입니다, 한달반정도 사용한 요즘은 2~3주중에 한번정도 잠잘때 삼각거치대에 꼽아놓고 2시간 살균을 하고 아침에 치웁니다.)
박스를 개봉해 볼까요? 기본 구성품입니다.
XD본체, 220V 아답터, 삼각거치대 헤드, 제품커버(벨벳), 사용설명서, 자외선 확인용 진드기모형(?) 정도가 들어있습니다.
의욕이 앞서 시험삼아 제품이 잘 작동하는지 들어있는 진드기 모형에 제품을 작동하고 가져가봤습니다.
동봉된 진드기모형이 붉은색으로 변하면 자외선이 나오고 있다는 거라네요!
이건 더 잘 보이시나요? 단, 제품에서 나오는 자외선은 살균용 자외선 파장이기때문에 절대 눈에 직접 쏘이거나, 피부에 오래시간 노출되면 안된다고 합니다. 저같은 경우는 켜놓고 자리를 비웁니다. ^^ 5분에 한번씩 자리변경 후 옆방가서 쉬거나 놀아요~ ^^
이제 제품의 사용법에 대해서 알아볼까요?
'05'라고 적힌 디지털 액정은 현재의 작동상태를 표시하는 곳입니다. 그리고 그 아래 보이는 동그란 버튼이 제품의 동작버튼입니다. 사용법은 아주 간단해요~ 버튼을 누르는 횟수에 따라 시간을 설정해서 사용하면 됩니다.
----------------
1회: 대기모드 (화면표시: --)
2회: 5분살균 (화면표시: 05)
3회: 2시간살균 (화면표기: 2H)
4회: 연속살균 (화면표시: CC)
사용중1회: 중지(화면표시: Ed)
----------------
제품 동작중 언제라도 다시 버튼을 1회 누르면 작동이 멈추며, 다시 대기상태에서 5분이 경과하면 디지털창이 완전히 꺼집니다. 2~4회버튼 누름의 경우 혹시라도 어린아이들의 손에 들어가면 사고가 발생할 수 있어 컴퓨터 마우스를 더블클릭하듯 "따닥!" 하는 느낌으로 눌러야만 작동이 됩니다.
몇 번 해보시면 감이 오실겁니다.
실제 어떤곳에 어떻게 활용하는지 한번 시험해 볼까요?
살균할 수 있는 곳들...
우리 아기침대 살균 중입니다. 퓨라이트를 손에 들고 살균할 수도 있지만, 5분동안 들고 있기 귀찮아서 거치대를 사용중입니다. 제품을 작동해 볼까요?
자외선이 눈으로 보이지가 않기때문에 불을끄고 진드기모형을 중간에 놔뒀습니다.
진드기 모형이 붉은색으로 보이는 것 보이시죠? 우리가 쓰는 섬유소재중에 형광표백제가 함유된 제품은 자외선을 비출 경우 위와 같이 밝은 형광 흰색으로 보일 수 있습니다. 아기제품이라 나름 형광표백제가 안들어간 것만 쓰려고 했는데 몇몇개가 하얗게 빛나길래 깜짝놀랬습니다.
유모차 살균 중입니다. 천천히 구석구석 나쁜 것들이 모두 사라지게해 달라는 염원(?)을 담아~ 살균중입니다. 아기가 좋아해야 할텐데.... 날이 점점 추워져서 유모차를 태울일이 점점 없어지네요. 아기가 키가 훌쩍커가는 중이라 아기바구니에 딱 3번 태워봤는데... 아까워죽겠습니다. 그리도 혹시 모르니 둘째를 위해서라도 나둬야 겠죠? ㅠㅠ
자주 사용하는 컴퓨터 키보드 살균 중입니다. 요즘은 키보드 가격이 만원대 정도밖에 안하기 때문에 너무 더러우면 새걸로 교체해도 되요~ 이것저것 만진 손으로 항상 키보드를 만져야 하니 손은 항상 깨끗히~ ^^
욕실 살균 중입니다. 변기도 살균하고, 세면대, 욕실선반까지 구석구석~
사진에서 보는 것과 같이 처음엔 손으로 들고서 열심히 하지만 2~3번 청소하다보면 요령이 생겨서 이런 곳은 삼각대에 세워서 대청소전 전체소독 5분으로 끝내버립니다. 수건의 경우 자외선 소독을 마치면 특유의 냄새가 납니다. 마치 햇볕에 마짝말린 일광소독후의 그런 냄새라고나 할까? 나중에 한번 시도해보세요. (그렇다고 젖은 수건이 자외선으로 인해 마른다는 건 절대 아닙니다. 오해하지마세요!)
아이 장난감들 살균 중입니다. 사실 이런 장난감들 매일매일 빨수도 없고 걱정했는데... 눈에 보이진 않지만 하고나면 마음만은 홀가분해지네요~
간이 수납함, 전자렌지 살균 중입니다. 사진을 모두 찍지는 못했지만 씽크대, 씽크대 선반, 냉장고 내부살균, 가스렌지, 침대 매트리스, 이불, 식기 등등... 모든 곳을 이런 방식으로 살균하면 됩니다.
자~ 어때요? 먼가 있어보이죠? ㅎㅎㅎ
두둥~! 여기서 집고 넘어갈 부분이 있습니다. 저 같은 경우 구매하고 4~5회정도 청소를 해 본 결과... 귀찮기도 하고, 들고 있으려니 팔이 아프기도 하고 그래서.... 청소법을 바꿨답니다.
제품에 동봉되어 있는 삼각거치대 헤드를 이용하여, 그냥 청소전에 켜놓고 끝나면 먼저를 턴다던가 정리를 해주면 간편해 집니다. 안그래도 바쁘고, 청소도 귀찮은데 구지 꼭 손으로 들고 있을 필요가 없겠죠?
그럼~~ 삼각거치대 사용법을 알아보겠습니다.
먼저 DSLR용 삼각대를 준비해봤습니다. 삼각대의 경우 제품에 동봉되어 있지 않으며, 집에서 쓰는 디지털카메라나 DSLR용 거치대를 준비하시면 됩니다. 제품에 동봉된 삼각거치대 헤드가 있으면 일반적인 카메라 삼각대와 호환이 됩니다.
자~ 제가 가지고 있는 삼각대 고정부입니다. 나사부분은 거의 대부분의 제품이 같은 크기라 대부분의 삼각대로 호환이 됩니다.
삼각대의 고정부와 퓨라이트 삼각거치대 헤드를 결합하기위해 준비합니다.
삼각거치대 헤드의 경우 위와 같이 벌려서 제품을 조립한 후
이렇게~ 고정하면 됩니다.
대충 전면부의 디지털창이 보이도록 고정하면 됩니다.
옆모습이네요... 고정시킬때 거치대헤드의 방향이 제품의 아랫방향으로 나오도록 해야 삼각대에 고정했을때 제품이 위로 향하게 됩니다.
삼각대 고정부를 준비하고... 거치대헤드에 결합합니다.
쏘옥 들어가도록 나사를 조여 조립합니다.
단단히 고정이 되었으면 삼각대 헤드에 끼워넣습니다. 삼각대마다 고정부에 약간 모양이 틀리므로, 이 부분은 알아서 해보세요~ 장난감 조립하듯 쉽게때문에 너무 걱정하지 않으셔도 됩니다.
사용후 충전하기
자~ 사용을 했으니 충전을 해둬야 다음에 사용시에 귀찮지 않겠죠? 기본적으로 제품을 충전해 두면 1시간 가량은 무선으로 사용할 수 있습니다. 물론 사용시에 아답터를 꼽아놓고 이용할 수 있습니다.
아답터의 LED가 초록색이면 충전이 완료된 상태, 붉은 색이면 충전 중임을 나타냅니다.
자~ 본론으로 들어가 볼까요? 제품의 장단점을 따져보도록 하지요~!
[ 장점 ]
전반적으로 1개월 반정도 사용하면서 느낀 점은 확실히 살균 효과가 느껴진다는 겁니다. 물론 지극히 개인적인 느낌일 수도 있지만 신혼집을 장만하면서 예전에 사용하던 쇼파와 책장의 오래된 책들을 가져와서인지(그래서 일부러 쇼파와 책장은 한쪽구석으로 몰아두었음) 아주 가끔 몸이 가렵거나, 와이프의 비염이 종종 심해지곤 했었는데... 퓨라이트 살균을 몇번 하고 난 후에는 가렵다는 소리를 안합니다. 저 뿐만 아니라 와이프도 이제 괜찮다고 하네요. 물론 와이프의 비염이 나은 것은 아닌것 같습니다만 쇼파하나만 봐도 효과가 있는 것 같네요.
또 하나의 눈에 띄는 점은 살균 후 욕실의 수건에서 냄새가 없어졌다는 겁니다. 물론 이것도 귀찮아서 자주 할 수 있는 것은 아니지만 빨래를 햇볕에 말리지 못한 날이면 꼭 자외선 살균을 해주는 게 좋을 것 같습니다.
머 장점이 무궁하게 많았으면 좋겠지만 살균기가 하는 일이 이정도면 되는 거 아닐까요? ㅎㅎㅎ
더 좋은 효과를 보면 추가하도록 하지요~!
[ 단점 ]
자~ 제 돈주고 산 제품인데 단점이나 미흡한 점이 없을 수는 없겠죠. 보완했으면 하는 아쉬운 점들 한번 살펴 볼까요? 무선사용시간이 의외로 짧습니다. 물론 1시간이면 충분한 시간일 수 있겠지만 가끔 대청소를 하다보면 이 시간이 짧게 느껴질때가 있네요. 아답터를 끼고 충전하면서 바로 이용이 가능하기때문에 큰 문제는 없지만 무선의 편리함은 유선이 따라올 수는 없죠. 좀 더 오래가는 배터리를 내장하면 좋겠지만 ... 배터리 기술이 하루빨리 발전하기를 기대해 봅니다. 또 한가지 아쉬운 점이 있다면 아직 1년이 넘지 않아서 제품이 고장이 나거나 하지는 않았는데... 부속품 중 자주 사용하는 삼각거치대 헤드의 내구성이 너무도 약합니다. 위에 사진들에서도 보는 바와 같이 그냥 투명 플라스틱으로 만들어져 있어서 조립하고 분리할때 깨질 위험성이 높습니다.(어제 깨트려먹음 --;) 물론 거치대헤드만 따로 판매하기 때문에 따로 구할 수는 있지만, 처음부터 좀 더 튼튼하게 만들었으면 하는 바람이 있네요.
자~ 어떠셨나요? 본 내용이 제품을 선택하시는대 조금이나마 도움이 되었으면 좋겠네요.
긴 내용 읽으신다고 고생하셨고, 간단한 코멘트 한줄 잊지 마세요~! ^^*
'리뷰,체험,사용기' 카테고리의 다른 글
| [리뷰] 자외선 살균기 퓨라이트 XD - 집먼지진드기, 각종 세균 살균! (1) | 2011/11/07 |
|---|---|
| [리뷰] 컬러 레이저 프린터 4개월 사용기 - 삼성전자 CLX-3175K (4) | 2011/03/31 |
| 실내분수 '큐티라인 2단' - 실내 공기정화와 겨울철 가습기능을 한번에~ (1) | 2010/11/24 |
| [리뷰] 로벡스 Trifrutta 3칸 접시 (0) | 2010/10/25 |
| [리뷰] 아이폰4 SGP 케이스 / 아이폰4 정품 범퍼 케이스 (1) | 2010/10/08 |
| [Apps] 아이폰4 통화품질이 좋지 않다면 - olleh 콕콕! (6) | 2010/10/02 |
| [Apps] Show 아이폰 문자 스팸차단기능 - 무료 (9) | 2010/09/13 |
| [리뷰] 아이폰4 드디어 내손에! 화질이 끝내줌ㅋㅋ^^ (0) | 2010/09/11 |
| [리뷰] 필립스 양초캔들(LED Candle Mini) BDS100 - 화재위험방지 양초 (0) | 2010/09/07 |
| [리뷰] 봉투가 어디갔지? ideaco 튜블러 휴지통 (3) | 2010/06/30 |
| [리뷰] 샐러드를 뽀송뽀송하게~ 웨스트마크 야채탈수기 (6) | 2010/06/27 |
[jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능)

요즘 유명 메이져사이트를 방문해보면 페이지 로딩 속도가 상당히 빨라졌다는 느낌이 들때가 있습니다.
방문자가 늘어난다고 서버시스템의 사양을 계속해서 높이거나 서버를 분산하기보다는
최대한 효율적인 방법으로 서버의 부하를 줄이는 노력을 강구해야 하는데 그중 이미지 파일들을 페이지 호출시 무작정 보여주는 것이 아니라 브라우져의 가시영역을 이동(스크롤)할 경우에만 해당 영역의 이미지를 보여주는 기능이 있어 소개합니다.
이렇게 함으로써 불필요한 서버의 로드를 줄일 수 있게 되어 서버의 성능에 좋은 영향을 미치게 됩니다.
방법론적인 차이는 있겠지만, 옥션이나 이미지를 주로 다루는 사이트들에서 많이 사용하는 방법이지요~!
이미지를 보시는 바와 같이 스크롤을 내리면 화면이 가시영역으로 들어오게되고,
이때 이미지를 서버에서 호출하게됩니다. 방문자가 많은 사이트나 이미지를 많이 사용하는 사이트에서
유용하게 사용할 수 있는 기능이 되겠네요.
사용법을 간단하게 안내해 드립니다.
1. 헤더부분에 아래코드를 넣음
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js" type="text/javascript"></script>
2. 이미지 태그를 지정함 (기본코드)
$("img").lazyload();
3. 실제 적용예제(img/grey.gif 파일을 이미지 로드전에 보여줌)
<script type="text/javascript" charset="utf-8">
$(function() {
$("img").lazyload({placeholder : "img/grey.gif"});
});
</script>
4. 특정영역에만 코드적용
게시판이나 본문내용외에 다른 이미지의 로드가 오작동하는 경우가 종종 발생합니다.
이를테면 전체 페이지 레이아웃을 DIV(CSS)로 구성하고 본문내용외의 오른쪽메뉴영역에 썸네일과 같은 이미지들이 있을 경우 페이지를 가장하단으로 가시영역을 스크롤하지 않으면 오른쪽이미지가 가시영역에 들어와있음에도 불구하고 로드되지 않는 경우가 발생합니다. (본문내용 영역이 하단으로 많이 내려올 경우에 종종 발생)
이때는 전체 페이지를 LazyLoad 효과를 적용하지 말고 특정 div 영역에만 국한되게 적용할 수 있습니다.
jQuery 문법인 $() 사용법과 마찬가지로 아래와 같이 적용합니다. 적용법은 아래와 같습니다.
<script type="text/javascript" charset="utf-8">
$(function() {
$("#lazyload img").lazyload({placeholder : "img/grey.gif"});
});
</script>
<div id="lazyload">
.....<img src="....">
</div>
해당 "lazyload"라는 id값을 가진 div영역 내에서만 작동하게됩니다.
재밋게 활용해보세요.~! 특정영역 지정이나, 기타 옵션은 참고사이트 데모페이지를 참조하시기 바랍니다.
참고사이트: http://www.appelsiini.net/projects/lazyload/
'IT기술,개발 > 웹프로그래밍' 카테고리의 다른 글
| [소셜(SNS)댓글] 네이버 미투데이(me2day) 연동 FAQ (0) | 2011/11/17 |
|---|---|
| [소셜(SNS)댓글] twitter 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] 다음 요즘(yozm) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제 (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #1 - 페이스북 API 키 발급 (0) | 2011/11/17 |
| [jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능) (0) | 2011/09/27 |
| [Ajax] Microsoft.XMLHTTP(Ajax) - 서버 실시간 모니터링 (0) | 2011/09/27 |
| [MYSQL] mysql data type (DB 데이터 타입) (0) | 2011/09/27 |
| [Linux] 아파치 웹로그분석툴 webalizer 설치 (0) | 2011/03/31 |
| crontab(cronjob) 스케쥴, php관리툴 응용제어 (0) | 2011/03/23 |
| 타디스(tadis) 운영을 마감하며... 타디스 History (6) | 2009/11/29 |
2.0 시대를 시작하면서 ajax의 원리와 개념은 이제 널리 쓰이는 웹기술이 되었습니다.
이제 막 ajax의 활용법이나 개념을 배우시는 분들을 위해 아주 간단한 소스를 공개합니다.
해당 파일의 용도는 실시간으로 서버를 모니터링하는 소스이지만,
윈리를 분석하면 초단위로 특정위치의 정보를 특정페이지로 전달해주는 기능입니다.
이를 응용하게 되면 많은 곳에서 활용하실 수 있을겁니다.
서버의 특정 페이지에 올려주고, refresh_data.php 파일안의 DB 컨넥션 정보를 수정해 주시면,
바로 작동이 시작됩니다. 단, 해당 폴더에는 보안계정을 걸어주고 사용하시는 것이 안전할 것 같습니다.
'IT기술,개발 > 웹프로그래밍' 카테고리의 다른 글
| [소셜(SNS)댓글] twitter 연동 FAQ (0) | 2011/11/17 |
|---|---|
| [소셜(SNS)댓글] 다음 요즘(yozm) 연동 FAQ (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제 (0) | 2011/11/17 |
| [소셜(SNS)댓글] facebook 연동 FAQ #1 - 페이스북 API 키 발급 (0) | 2011/11/17 |
| [jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능) (0) | 2011/09/27 |
| [Ajax] Microsoft.XMLHTTP(Ajax) - 서버 실시간 모니터링 (0) | 2011/09/27 |
| [MYSQL] mysql data type (DB 데이터 타입) (0) | 2011/09/27 |
| [Linux] 아파치 웹로그분석툴 webalizer 설치 (0) | 2011/03/31 |
| crontab(cronjob) 스케쥴, php관리툴 응용제어 (0) | 2011/03/23 |
| 타디스(tadis) 운영을 마감하며... 타디스 History (6) | 2009/11/29 |
| CSS, JQuery 를 이용한 텍스트카운터 (2) | 2009/07/09 |



jquery.lazyload.js
status.zip
Prev
Rss Feed