[WINDOW]OCX 등록법
1. 윈도우의 system32 폴더에 해당 ocx 를 카피한다 2. command 창을 띄운다 3. regsvr32 ocxName 하면 성공했다고 메세지창이 나온다
키자드에 등록된 총 535개의 포스트를 확인하실 수 있습니다.
1. 윈도우의 system32 폴더에 해당 ocx 를 카피한다 2. command 창을 띄운다 3. regsvr32 ocxName 하면 성공했다고 메세지창이 나온다
[XP] 1. Command 창에서 control userpasswords2 입력 2. "사용자 이름과 암호를 입력해야 이 컴퓨터..." 체크 없애기 [Win2000 Server] 1. 실행창에서 regedit 실행 2. HKEY_LOCAL_MACHINE>SOFTWARE>Microsoft>Windows NT>CurrentVersion\Winlogon 마우스 오른쪽 버튼 클릭 3. 새로만들기>문자열 값 4. DefaultPassword 만들고 값에 패스워드를 넣는다 5. AutoAdminLogon 만들고 값에 1을 넣는다 6. 재부팅
1. MUTI PACK 보관함 2. 환결설정 3. * 5 초간 눌렀다 띰 4. 비밀번호 583 5. 서버설정에 들어가 테스트 서버로 설정
1. VB의 왼쪽 툴바를 오른쪽 마우스로 클릭하여 구성요성를 추가한다 2. Microsoft ADO Data Control 6.0 (SP4)(OLEDB) 체크 후 확인 3. 툴바에 추가된 Adodc 를 폼에 추가한다 4. 추가 한 Adodc를 오른쪽 마우스 클릭하여 속성에 들어간다 5. 일반탭에서 연결문자열사용 선택 후 작성 클릭 6. Microsoft OLE DB Privider for SQL Server 선택 후 다음 7. 1) 서버이름에 아이피를 추가 2) 사용자 이름, 암호를 넣고 암호저장 허용을 체크한다 3) 서버에서 데이터... 선택 후 연결 테스트. 성공하면 확인 8. 연결문자열에 연결문자가 생기면 복사한 후 확인 9. 공용변수를 선언한다 Public DBRecord As New ADODB.Recordset '데이터를 가져오기 위한 변수선언 Public DBConn As New ADODB.Connection '데이타베이스를 연결시킬 변수선언 Public DBQuery A
텍스트박스를 멀티라인으로 만들어 텍스트를 계속 밑으로 추가할 경우 텍스트박스 영역 이상으로 추가되면 밑에 추가된 텍스트가 보지 않는다 이럴 경우 아래와 같이 코딩하면 최근 추가된 텍스트 로 포커스가 이동된다. Text1.SelStart = Len(Text1.Text) * 단점은 text 의 길이가 너무 길면 len 함수에서 오류가 난다는거
<style type="text/css"> <!-- a:link,a:visited,a:active { text-decoration : none; color : black; } a:hover { text-decoration : none; color : red; } IMG{border:none;} //--> </style>
1. ATD or ATDT Data call을 하고자 할 경우 사용. 보통 ATDT의 command를 사용하나 실제로는 ATD command를 사용해도 무방하다. 형식 : ATDT <dial string> 예 : ATDT 016 ATDT command를 수신하면 Qmodem은 통상 “CONNECT”로 응답한다. 단 현재 CDMA state가 No Service이거나 system 획득 과정이라면 2분간 system을 획득할 때까지 기다렸다가 “CONNECT”로 응답한다. 만일 2분내로 system을 획득하는데 실패하면 “NO DIALTONE”으로 응답한다. 또 ESN 또는 전화 번호가 잘못된 경우 “+CERROR: NO SERVICE”로 응답한다. 무선 망에 접속 중 상대에 의해 또는 system에 의해 call이 release되는 경우 “NO CARRIER”가 return된다. ATDT command에 대한 응답 방식은 첫번째 : Qmodem이 packet service mode에
1. IIS6.0 이 설치된 윈2003 서버를 준비한다 2. PHP_Setup_for_IIS_MySQL5_v20060119.exe 를 설치(apmsetup.com) 3. C:\PHP_Setup_for_IIS\PHP5 폴더에 들어가 php.ini 를 연다 4. extension=php_mssql.dll 앞의 주석인 ; 를 삭제 5. 첨부된 ntwdblib.dll 파일을 이 PHP5에 복사해 넣는다. * 이게 중요함 이 파일의 버전이 MSSQL 버전과 맞아야 외부에 있는 MSSQL 과 접속이 됨. 맞지 않으면 첨부된 다른 DLL을 사용해 볼것 6. php_info 로 mssql 이 로드 되었는지 확인한 후 디비에 접속해본다
CGI Timeout 을 설정하지 않았을 경우 기본 5분(300)으로 설정되어 있으며 웹페이지가 5분만 실행되고 멈춘다. 이 타임아웃을 늘리기 위해서는 아래의 절차대로 세팅하여야 한다 - Metabase Explorer 설치 & 실행(C:\Program Files\IIS Resources\Metabase Explorer\MBExplorer.exe) - 왼쪽 트리에서 LM>W3SVC 클릭 - 오른쪽 값들에서 CGI Timeout 을 찾아 더블클릭 - 디폴트 300초(5분)으로 설정되어 있으며 원하는 값으로 수정한다 - 윈도우 실행창을 열어 iisreset 으로 IIS 를 재실행 해준다
아래의 순서대로 만들면 된다 * 파, 줄파, 줄녹, 주, 줄주, 녹, 줄갈, 갈 * 주, 줄주, 줄녹, 파, 줄파, 녹, 줄갈, 갈
iPhone SDK 3.1 을 설치하기 위해서는 윈도우에서는 설치가 되지 않고 MAX OS를 사용해야 한다. MAX 컴을 사면 좋겠으나 비싸므 로 패스~. 우리에겐 VMware 란 좋은 프로그램이 있으니 이를 사 용하여 윈도우에서 MAC을 설치하면 된다. 많은 삽질이 필요하다고 하나 운좋게 한방에 설치완료 ㅡㅡv 정확한 설치 방법은 설치문서를 참고...
웹포워딩시 쿠키설정이 되지 않는다 이는 간단한게 이야기해서 보안정책 때문에 그런데 아래의 소스를 쿠키설정 부분에 추가해 주면 된다. <? header('P3P: CP=:NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAY INT DEM PRE"'); //쿠키설정 ?>
사이트 접속시 바탕화면에 바로가기 설치 첨부파일 OCX 를 동일 폴도에 놓는다 [소스] <HTML> <HEAD> <TITLE>바탕화면에 바로가기 만들기</TITLE> <OBJECT ID="HitPlus" CLASSID="CLSID:FF0CD5DC-60A6-4668-AB80-1ACF40ED9CB8" CODEBASE="HitPlus.cab#version=1,0,0,1"> </OBJECT> <script language='javascript'> HitPlus.CreateDesktopIcon("바로SMS","접속URL","아이콘접속URL"); </script> </HEAD> <BODY> </BODY> </HTML>
타 웹페이지를 불러와 실행시킨다 [GET 방식] $url="http://test.com/index.php?test=$test"; $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_exec($ch); curl_close($ch); [POST 방식] $data = array('value1' => 'Foo', 'value2' => 'test'); $data = http_build_query($data); //php가 아닐경우 multipart/form data 로 전달되기 때문에 변환 필요 curl_setopt($ch, CURLOPT_URL, 'http://test.com/index.php'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 결과값을 받고 싶을 경우 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
<input type="button" value="목록으로" onClick="location.href='longtime_member.html'" />
한영변환키가 먹지 않을경우 제어판>키보드>하드웨어에서 101호환 키보드로 변경 시작>실행>regedit Hkey_Local_Machine\System\CurrentControlSet\Services\i8042prt\Parameters OverrideKeyboardIdentifier : PCAT_101Akey OverrideKeyboardSubtype : 3 OverrideKeyboardType : 8 LayerDriverKOR : KBD101A.DLL
1. http://www.freeproxylists.net/?c=US 에 접속해서 미국내 프록시 목록확인(상태가 초록색인거) 2. Explorer>도구>인터넷옵션>연결탭>LAN설정에 1에서 확인한 정보를 입력
실시간 동영상 플레이 <object CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="480" height="270" ID="Player" o-mouseover="this.uiMode='full'" o-mouseout="this.uiMode='none'"> <PARAM name="autoStart" value="True"> <PARAM name="stretchToFit" value="True"> <PARAM name="URL" value="mms://ytninternet.co.kr/keumsung_20120606"> <!--<PARAM name="enableContextMenu" value="False">--> <PARAM name="uiMode" value="none"> <PARAM name="mute" value="0"> </object>
한글, 영문순으로 정렬하기 select if(ASCII(SUBSTRING(name, 1)) < 128, 2, 1) cc, name from 테이블 order by cc, binary(name);
<? $today = date("Y-m-d"); $now_time = date("H:i"); $que = "select b_time, program from TBPOD_TODAY_SCHEDULE where b_date='{$today}' and ch_type='YTN' and agree_chk='1'"; $row = $db->queryrow($que); if($row) { extract($row); $arr_btime = explode("||",$b_time); $arr_pro = explode("||",$program); $total_record = 0; $timeChk=-1; foreach($arr_btime as $i=> $value) { if($value) { $total_record++; $time_arr = explode(":", $value); $arr_btime[$i] = $value; if($i!=0 && ($arr_btime[$i-1]<=$now_time && $a
//입력시 $c_mark=addslashes($c_mark); //출력시 $c_mark = htmlspecialchars(stripslashes($c_mark));
select m.user_id from (select distinct user_id from YTN_NEWSON.TBPOD_KEYWORD_USER) n inner join YTN_MEMR.sv_user_01 m on n.user_id=m.user_id and m.e_date is null
하나의 row에 cols 별로 조건을 주기 select count(case when del_chk=1 then title else null end) as sort1 , count(case when del_chk=0 then title else null end) as sort2 from OSEN_SVCS.NEWS_01
flush 는 버퍼의 내용을 미리 출력하는 함수인데 IE의 경우 버퍼의 내용이 256Byte 이상이 되어야 출력이 된다. 그래서, 아래의 함수를 넣어 버퍼가 256Byte 가 넘도록 처리한다. str_pad(" ",256); flush();
document.getElementById('startPage'). = function(){ try { var sp = document.getElementById('startPage'); sp.style.behavior = 'url(#default#homepage)'; sp.setHomePage('http://www.ytn.co.kr/'); try {ct.call(sp)} catch(e) {} } catch (e) {} }
[출력파일] <script> function xls(){ var file = ""; var datda = ""; file = "아이패드_월별통계"; data = $('view').innerHTML; save_xls(file,data); } function save_xls(filename,data){ var f=document.xls_form; f.xls_filename.value=filename; f.xls_data.value=data; f.submit(); } </script> <form name="xls_form" method="post" action="excel_save.php"> <input type="hidden" name="xls_filename"> <input type="hidden" name="xls_data"> </form> <div id="view">출력내용</div> [excel_save.php] $xls_filename = $_POST['xls_filename'
자바스크립트로 SELECT 박스 초기화 및 추가하는 법 var stadium = wform.stadium; stadium.options.length=0; //삭제 stadium.add(new Option("이름","값")); //추가
A 테이블을 쿼리하고 그 결과에 B 테이블의 결과를 붙인다 select a.*, b.idx from test1 a left outer join test2 b on a.idx=b.idx where a.n_date=now() 이렇게 할 경우 b.idx가 없을 경우 null 로 나온다
$xml_string = file_get_contents("./download/status-201305281718167338-s.xml"); $enc = mb_detect_ENCODING($xml_string,array('EUC-KR','UTF-8','shift_jis','CN-GB')); $xml = simplexml_load_string($xml_string);
datetime 으로 저장된 s_date, e_date 두 개의 필드의 분차이를 계산 select (UNIX_TIMESTAMP(e_date)-UNIX_TIMESTAMP(s_date))/60 as min from table
<script src="/_js/jquery-1.8.3.min.js"></script> function scheduleLoad(){ $.get('./incfile/nowSchedule.xml', function (data) { $('#ctlGrid').empty(); var index = 1; $(data).find('schedule').each(function () { var $entry = $(this); // 현재 시점의 레코드셋 $("#sTime"+index).html($entry.find('time').text()); $("#sTitle"+index).html($entry.find('title').text()); index++; }); }); } 다른방식 ---------------------------------------- $.ajax({ type:"GET" ,url:"blackbox_point_xml.php?sort=MEMBER" ,dataType:"xml" ,asyn
[조건문] if [ $N_MIN -lt 10 ]; then FILE="news_"$N_DATE"_1.log" elif [ $N_MIN -ge 10 ] && [ $N_MIN -lt 20 ]; then FILE="news_"$N_DATE"_2.log" elif [ $N_MIN -ge 20 ] && [ $N_MIN -lt 30 ]; then FILE="news_"$N_DATE"_3.log" elif [ $N_MIN -ge 30 ] && [ $N_MIN -lt 40 ]; then FILE="news_"$N_DATE"_4.log" elif [ $N_MIN -ge 40 ] && [ $N_MIN -lt 50 ]; then FILE="news_"$N_DATE"_5.log" else FILE="news_"$N_DATE"_6.log" fi [ $A -eq $B ] : A와B의 값이 같은경우 [ $A -ne $B ] : A와B의 값이 다른경우 [ $A -gt $B ] : A가B보다 큰경우 [ $A -l
* 날짜에 상관없이 시간별 검색 - select * from table where date_format(n_date,'%H')='12'
member 리스트를 notice 에 최근 글등록한 순으로 나열 select * from member a , (select id, max(regDate) as regDate from notice where 1 group by id) b where a.id=b.id order by b.regDate desc
[페이스북 공유하기] - 링크 $ytn = urlencode("http://www.ytn.co.kr/program/esriMap/map_popup.php"); $facebook = "http://www.facebook.com/share.php?u=$ytn"; - 메타태그 <title>우리 동네 유독물 취급 사업장 지도</title> <meta http-equiv="content-type" content="text/html;charset=ks_c_5601-1987"/> <meta property="og:url" content="http://www.ytn.co.kr/program/esriMap/map_popup.php" /> <meta property="og:title" content="우리 동네 유독물 취급 사업장 지도" /> <meta property="og:description" content="" /> <meta property="og:description" content=""
* 구글 웹마스터 도구에 들어가서 사이트를 등록한다 * 해당 사이트 관리자에 들어가 좌측 Google 색인>URL제거 접속 * 새로운 삭제요청 작성하기를 눌러 삭제하고 싶은 주소를 입력한다. 해당 도메인 전체를 삭제하고 싶으면 공란으로 두고 계속을 누르면 된다.
- CONCAT : 문자열 합치기 concat(date,' ',time) - LEFT : 문자열 왼쪽부터 자르기 left("test string", 5) - SUBSTRING : 문자열 지정 자르기 substring("test string", 1, 10) - RIGHT : 문자열 오른쪽부터 자르기 right("test string", 5) - REPLACE : 입력한 문자열을 교체 replace('source', '원본문자열', '교체할문자열')
//$rows 의 idx 값으로 desc 정렬 foreach($rows as $i=>$v) $idx[$i] = $v[idx]; array_multisort($idx, SORT_DESC, $rows);
- 필드의 값에 따라 정렬 . order by field(m_cd,'0101','0102','0103','0104') . m_cd 값을 기준으로 값이 위와 같은 순서로 정렬 - 다중 정렬 . order BY field(m_cd,'0102','0101') DESC, name ASC . 0101, 0102 순으로 + name asc 순으로
* 네이버 - http://developer.naver.com/wiki/pages/OpenAPI 의 네이버 로그인 절차에 들어가 해당 절차에 따라 개발 로그인 페이지에서 호출하는 콜백페이지에서 아래와 같이 처리 include "./_prog/Sns.Class.php"; $sns = new Sns("NAVER"); $sns->naverState = $_REQUEST[state]; $sns->naverCode = $_REQUEST[code]; $rst = $sns->getNaverUserInfo(); if($rst!="1"){ //로그인 오류 echo $rst; } //로그인 처리 echo $sns->email; * Sns.Class.php <? /------------------------------------------------------------------------------------------------------------------------------- - 이 름 :
* PHP QUICK START : https://developers.google.com/+/quickstart/php 1. https://code.google.com/apis/console/ 접속 2. 새 프로젝트 생성 (Create project) 3. Google+ API 를 On 4. 좌측메뉴>APIs&auth>consent screen - EMAIL ADDRESS, PRODUCT NAME 필수 입력 5. 좌측메뉴>APIs&auth>Credentials - OAuth의 Create new Client ID 를 눌러 신규 ID를 생성 . APPLICATION TYPE : Web application . AUTHORIZED JAVASCRIPT OGIGINS : 홈페이지 . AUTHORIZED REDIRECT URI : 로그인 후 리턴받을 URL입력 - 생성된 CLIENT ID, CLIENT SECRET, REDIRECT URIS 를 연동 때 사용 6. https://github.
* 페이스북 개발자 사이트에 들어가 APP 을 등록한다. * PHP, JAVASCRIPT API 가 제공되며 첨부된 소스는 PHP SDK Version 3.2.3 임 - 4.0.0 버전이 있으나 PHP 5.4 이상 버전을 요하여 3.2.3 버전 사용 * login.php와 login_exe.php 에 appID, secret 를 등록한다. * login.php 에서 redirectURL 입력 * 세션 or 쿠키 사용설정 (페이스북에서 제공하는 것은 세션이었으나 쿠키를 사용하는 홈페이지가 있어 옵션 추가) - ./src/facebook.php 의 SAVE_OPTION * login.php 에서 로그인 버튼을 클릭하면 새창으로 페이스북 로그인이 진행되며 완료되면 redirectURL 지정된 login_exe.php 로 이동되어 사용자의 개인정보를 출력한다. * 추가 정보가 필요할 경우 페이스북에 요청할 수 있다 - 좌측의 Stauts&Review 클릭 - Status 하단의 Approv
mysql_ping 함수를 이용하여 연결상태체크 $connect = mysql_connect($host,$user,$pass); $select = mysql_select_db($db_name); if(!mysql_ping($connect)){ //재연결 설정 }
기본 아래로 이동하며 이동 후 텍스트가 길면 왼쪽으로 이동시킴 <? //SAMPLE PAGE : http://www.givainc.com/labs/marquee_example.htm //설정 : http://www.givainc.com/labs/marquee_jquery_plugin.htm ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript" src="http://
$.ajax ({ "url" : "http://url", // 데이터가 있는 곳의 주소 cache : false, success : function (html) { alert(html);// 받아온 데이터를 표시한다. } });
function byteChk(str){ var rst=0; for(var i=0;i<str.value.length;i++){ var oneChar = escape(str.value.charAt(i)); if(oneChar.length==1) rst++; else if(oneChar.indexOf("%u")!=-1) rst+=2; else if(oneChar.indexOf("%")!=-1) rst+=oneChar.length/3; } return rst; }
폼 전송 시 대용량 파일이 있을 경우 등록버튼을 누르면 등록화면에서 멈춰 한참을 기다려야하는데 이럴경우 사용자는 처리가 되지 않는다고 생각한다. 이를 방지하기 위해 레이어로 처리중 GIF 이미 지를 화면에 뿌려준다. (left, top 값에 이미지사이즈 적용해야 화면 정중앙에 나옴) //팝업 레이어 <div id="pop" style="position:absolute;display:none"> <img src="../img/processing.gif" /> </div> //등록버튼 클릭 시 처리 document.wform.submit(); window.scrollTo(0,0); document.getElementById("pop").style.left = document.documentElement.clientWidth/2+ "px"; document.getElementById("pop").style.top = document.documentElement.clientHeight/2
UNION ALL 로 검색된 테이블 COUNT select count(id) from ( select id from test1 where type=1 union all select id from test2 where type=1 ) as A
//창의크기 document.documentElement.clientWidth document.documentElement.clientHeight //해상도 크기 window.screen.availWidth window.screen.availHeight //창의 위치 window.screenTop window.screenLeft - 듀얼모니터의 경우 해상도를 넘어갈 수 있음
$_SERVER['DOCUMENT_ROOT'] = 현재 사이트가 위치한 서버상의 위치 => /home/html $_SERVER['HTTP_ACCEPT_ENCODING'] = 인코딩 방식 $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 언어 $_SERVER['HTTP_USER_AGENT'] = 사이트 접속한 사용자 환경 => Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705 $_SERVER['REMOTE_ADDR'] = 사이트 접속한 사용자 IP $_SERVER['HTTP_REFERER'] = 이전페이지 주소(A태그나 form으로 전송시 값이 넘어옴. onclick으로 전송시 값이 넘어오지 않음) $_SERVER['SCRIPT_FILENAME'] = 실행되고 있는 위치와 파일명 => home/html/index.php $_SERVER['SERVER_NAME'] = 사이트 도메인 =>
다중선택을 하는 셀렉트박스는 선택 시 컨트롤키를 눌러 다중선택을 하게 되어있는데 이렇게 말고 체크박스를 넣어 컨트롤키를 누르지 않아도 다중선택할 수 있게하였다. 물론 셀렉트박스가 아닌 DIV 로 처리했다. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <script> function multiSelect(value){ if(value=="OPEN") Div.style.visibility="visible"; else Div.style.visibility="hidden"; } </script> <style type="text/css"> select, ul { height: 100px; overflow: auto; width: 200px; border: 1px solid #000; } ul { list-style-type: none
<!DOCTYPE HTML> <html lang="ko"> <head> <meta charset="utf-8" /> <title>New Document</title> <script> function passwordCheck() { var userID = document.getElementById("userID").value; var password = document.getElementById("password").value; var newPassword1 = document.getElementById("newPassword1").value; var newPassword2 = document.getElementById("newPassword2").value; // 재입력 일치 여부 if (newPassword1 != newPassword2) { alert("입력한 두 개의 비밀번호가 서로 일치하지 않습니다."); return false; } // 길이 if(!/^[a-zA-Z0-9!
구글 API 를 사용할 경우 Oauth2 인증을 해서 토큰 값을 받아야 하는데 이 토큰이 1시간이후 만료되 어 서버에서 자동으로 배치처리할 경우 토큰 갱신을 해줘 유효한 토큰을 항상 유지시켜야한다. 1. Client ID 생성 - https://console.developers.google.com/iam-admin/projects 에서 '프로젝트 만들기' 클릭하여 생성 - 프로젝트가 생성되면 리스트의 작업을 선택>설정에 들어가 해당 프로젝트 설정화면에 들어간다 - 상단 왼쪽의 탐색메뉴클릭>API및 서비스>사용자 인증 정보 클릭 - 사용자 인증정보 만들기 클릭 > OAuth 클라이언트 ID 클릭 - '동의 화면 구성' 버튼 클릭하여 필수 정보만 입력 - 애플리케이션 유형을 웹 애플리케이션 선택 (승인된 리디렉션 URI 는'https://developers.google.com/oauthplayground' 입력 - 생성된 정보를 적어놓는다 - 좌측의 라이브러리를 선택하여 사용할 API를
<? $img = getimagesize("ori.jpg"); $imgResorce = imagecreatefromjpeg("ori.jpg"); $width = $img[0]; $height = $img[1]; $mark = getimagesize("watermark.png"); $markResorce = imagecreatefrompng("watermark.png"); $paddingX = $width-$mark[0]-17; $paddingY = 17; //워터마크 투명하게 만들기 imagecopyresampled($imgResorce, $markResorce, $paddingX, $paddingY, 0, 0, $mark[0], $mark[1], imagesx($markResorce), imagesy($markResorce)); imagejpeg($imgResorce,"convert.jpg",100); //저장 @imagedestroy($imgResorce); @imagedestr
유튜브 재생목록안의 비디오 리스트를 가져온다. 재생목록의 id 값을 알아야 하며 한번에 50개의 값만을 가져올 수 있고 pageToken 을 지정하여 다음 리스트를 가져올 수 있다. * https://developers.google.com/youtube/v3/docs/playlistItems/list $client = new Google_Client(); $client->setClientId(""); $client->setClientSecret(""); $client->setScopes('https://www.googleapis.com/auth/youtube'); $client->refreshToken($token); $youtube = new Google_Service_YouTube($client); $htmlBody = ''; $playlistItemsResponse = $youtube->playlistItems->listPlaylistItems('snippet', array(
재생목록의 삭제에는 재생목록 자체를 삭제하는게 있고 재생목록안의 동영상을 삭제하는 것이 있다 재생목록 자체를 삭제하려면 재생목록의 아이디가 필요하고, 동영상을 삭제하려면 재생목록 동영상 아이디가 필요하다. <? //재생목록 삭제 require_once 'google/src/Google/Client.php'; require_once 'google/src/Google/Service/YouTube.php'; $data = array('refresh_token' => '' ,'client_id' => '' ,'client_secret' => '' ,'grant_type' => ''); $data = http_build_query($data); $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://accounts.google.com/o/oauth2/token'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt
require_once 'google/src/Google/Client.php'; require_once 'google/src/Google/Service/YouTube.php'; $data = array('refresh_token' => '' ,'client_id' => ' ,'client_secret' => '' ,'grant_type' => 'refresh_token'); $data = http_build_query($data); $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://accounts.google.com/o/oauth2/token'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $result=curl_exec($ch); $rstJson = jso
//워터마크 만들기 //$img(원본이미지), $watermark(워터마크), $name(워터마크 넣은 이미지), $x/$y(워터마크위치) function makeWatermark($img,$watermark,$name,$x,$y){ $imgResorce = imagecreatefromjpeg($img); $mark = getimagesize($watermark); $markResorce = imagecreatefrompng($watermark); //$size = getimagesize($img); //$width = $size[0]; //$height = $size[1]; $paddingX = $x; $paddingY = $y; //워터마크 투명하게 만들기 imagecopyresampled($imgResorce, $markResorce, $paddingX, $paddingY, 0, 0, $mark[0], $mark[1], imagesx($markResorce), imagesy($
리눅스 64비트를 사용하고 있어서 그런지 imagecreatefromjpeg 사용시 아래와 같은 오류가 발생했다 Warning: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error: in /home/html/youtube/_prog/webFunction.php on line 72 Wrong JPEG library version: library is 62, caller expects 90 PHP Warning: imagecreatefromjpeg(): ''./upload/201305010057460591_h.jpg'' is not a valid JPEG file in /home/html/youtube/_prog/webFunction.php on line 72 Warning: imagecreatefromjpeg(): ''./upload/201305010057460591_h.jpg'' is not a valid
crontab 기본 설정은 분단위까지 가능하나 sleep 을 사용하여 초단위로 실행할 수 있다. * * * * * sleep 30; su -root -c '/home/html/_batch/test.sh'
var t = "[email protected]"; if(t.match(/^(\w+)@(\w+)[.](\w+)$/ig) == null && t.match(/^(\w+)@(\w+)[.](\w+)[.](\w+)$/ig) == null){ alert("이메일을 올바르게 입력해 주세요."); }
INSERT 쿼리시 데이터가 이미 있을 경우 업데이트 하는 쿼리 insert into tbl (id, name) values ('test','이름') on duplicate key update name='이름'
* 폴더복사 : cp -rf /usr/t1 /usr/t2 * 폴더권한 : chmod 777 폴더 * 파일복사 : cp 원본파일 대상파일 * 파일 덮어쓰기(원본파일은 삭제됨) : mv 원본파일 대상파일 * 파일 수정잠금 처리/해지 - /sbin/chattr +i 파일명 : 잠금 - /sbin/chattr -i 파일명 : 해지 - find /home/html/ytn -name '*.php' -exec /sbin/chattr +i {} \; : 전체잠금 - find /home/html/ytn -name '*.php' -exec /sbin/chattr -i {} \; : 전체해지 * 한글깨짐 처리 : LANG=ko_KR.eucKR * find - 파일 찾기 : find / -name fileName - 파일안 문구 찾기 : find . -name "*.php" | xargs grep TBSVCS_NOWCAST | more (하위 모든 디렉토리의 php 파일안 TBSVCS_NOWCAST 문구
FTP를 이용한 파일 전송 과정에서 ASCII 모드일 때는 각 OS에 맞게 개행코드(모든 행에 \r\n 이 붙는다) 가 변환되어 문제가 될때가 있다. 이럴 경우 BINARY 모드로 전송하면 원본 그대로 전송되 기 때문에 문제를 해결할 수 있다. * 명령어 : binary (ftp 접속 후 사용하면 모드가 변경된다)
exif_imagetype("test.jpg"); 함수로 이미지 타입을 읽어올 수 있다 function IMG_EXIF($img) { $exif = exif_read_data($img); while(list($k, $v) = each($exif)) { if($k == "FileSize") { // 이미지 용량 $info['FileSize'] = $v; } else if ($k == "ImageDescription") { $info['ImageDescription'] = $v; } else if ($k == "Model") { //카메라모델 $info['Model'] = $v; } else if ($k == "DateTime") { //찍은시간 $info['DateTime'] = $v; } else if ($k == "Flash") { //플래쉬 if ($v == 1) { $info['Flash'] = "YES"; } else { $info['Flash'] = "NO"; } } els
수평 가운데 정렬 <s:layout> <s:VerticalLayout verticalAlign="middle" horizontalAlign="center"/> </s:layout>
* 생성 - 생성을 원하는 디비에서 오른쪽 마우스 클릭 - 새로생성>트리거 * 수정 - 생성을 하면 테이블 하단에 트리거 리스트가 나온다 이를 클릭하여 수정 * 삭제 - 해당 트리거를 마우스 오른쪽 버튼 클릭하여 삭제
테이블에 INSERT, UPDATE, DELETE 작업 발생 시 설정한 쿼리를 수행한다 DELIMITER $$ CREATE TRIGGER 트리거이름 BEFORE 작업 ON 테이블이름 FOR EACH ROW BEGIN IF (NEW.AA <> OLD.AA) THEN SET new.BB = new.AA; END IF ; END$$ ; * 작업 : INSERT, UPDATE, DELETE 가 들어가며 테이블에 해당 작업 발생 시 수행된다 * BEFORE : BEFORE, AFTER 가 들어가며 작업 수행 전, 수행 후 의미한다 * NEW : 트리거가 등록된 테이블(DELETE 트리거에서는 OLD 로 변경 사용)
KRNIC 에서 정의한 국가별 아이피 대역정보 * http://www.krnic.or.kr/jsp/infoboard/stats/interProCurrent.jsp 아래는 실시간 확인 $domain = "111.168.163.144"; $fp = fsockopen("whois.nida.or.kr",43); if($fp){ fputs($fp,"$domain\n"); while(!feof($fp)){ $result .= fgets($fp,80); } if(ereg("whois\.arin\.net",$result)){ echo "북미<br>"; }else if(ereg("whois\.apnic\.net",$result)){ echo "해외<br>"; }else{ echo "국내<br>"; } $result = nl2br($result); echo $result; }else{ echo "fail"; }
효율적인 멤리 관리를 위한 '지연된 로딩' 이란 간단하게 설명하여 웹페이지를 호출했을 때 눈에 보이는 곳의 이미지를 먼저 로딩하고 눈에 보이지 않는 즉, 스크롤 해야만 볼 수 있는 영역의 이미지는 스크롤을 하면 그때 로딩해주는 방식이다. 전체 이미지를 한번에 로딩하지 않기 때문에 이미지 로딩에 대한 비용을 줄일 수 있다. * WIKIPEDIA : http://en.wikipedia.org/wiki/Lazy_loading * JQUERY : https://github.com/ressio/lazy-load-xt *DEMO : https://github.com/ressio/lazy-load-xt/#demo 웹페이지 적용해본 결과 페이지 로딩 속도에 대한 장점은 없었으나 이미지가 많은 페이지일 경우 용량은 확실히 줄어든 것을 확인할 수 있다. 이미지 로딩이 순차적이 아닌 다중적으로 로딩되기 때문에 그런것 같다. * 브라우저에서 액티브스크립팅 사용안함으로 설정할 경우 해당 기능을 사용할 수
게시물의 등록된 시간이 몇분전인지 몇시간전인지 몇일전인지 계산하는 방법 $_time = time()-strtotime($regdate); $_minute = round($_time/60); $_hour = floor($_minute/60); $_day = floor($_hour/24); $_only_minute = $_minute % 60; if($_hour == 0) $date = $_only_minute."분 전"; else if($_day == 0) $date = $_hour."시간 전"; else $date = $_day."일 전";
버튼등을 클릭했을 때 스크롤을 특정위치로 이동시키는 방법 <a href="#here">here로 이동</a> 1 2 3 4 5 <a name="here" /> 클릭하면 스크롤이 here 로 이동한다.
이미지 위에 마우스 커스를 이동시 클릭표시인 손가락이 나오게 하는 방법 <img src="next.gif" alt="다음" onclick="chgImg(1)" style="cursor:pointer;">
체크박스에서 readonly 속성이 동작하지 않으며 disabled=disabled 를 사용하면 수정은 불가능 하나 post 값이 넘어가지 않는다. 값을 넘기고 싶고 수정을 못하게 하고 싶으면 아래와 같이 한다. * onclick='return(false);'
IP로 국가확인해주는 사이트는 여러개가 있는데 실서비스에 적용하기에는 여러가지 문제점이 있다. 그런 방식이 아닌 사이트에 DATA 파일을 다운로드 해놓고 API 를 사용하여 체크하는 방 법이 있다. 이 DATA의 정확도는 99.5%로 하며 매달 갱신된다고 한다. * http://www.maxmind.com/app/geolitecountry * PHP API : http://www.maxmind.com/app/php * Binary Format 다운로드 http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/ PHP API에 나오는 GitHub 에 접속하여 소스를 다운로드 받으면 examples 폴더에서 샘플 소스를 확인할 수 있다. 아래는 샘플이다. <? include("./src/geoip.inc"); //api 폴더 $gi = geoip_open("./src/GeoIP.dat", GEOIP_STANDARD); //da
//PNG - > JPG $image = imagecreatefrompng("test.PNG"); imagejpeg($image, $dstFile); imagedestroy($image); //GIF -> JPG $image = imagecreatefromgif("test.gif"); imagejpeg($image, $dstFile); imagedestroy($image); //BMP -> JPG $image = imagecreatefrombmp("test.bmp"); imagejpeg($image, $dstFile); imagedestroy($image); function ImageCreateFromBMP($filename){ //Ouverture du fichier en mode binaire if (! $f1 = fopen($filename,"rb")) return FALSE; //1 : Chargement des ent?tes FICHIER $FILE = unpack("vfi
웹페이지에서 PDF 파일을 바로 보이도록 하고 싶으면 EMBED 태그를 사용하면 됩니다. * <embed src="test.pdf#toolbar=1" type="application/pdf" width="100" height="100" /> 옵션은 아래 사이트에서 확인할 수 있다 * http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf * 주요옵션 . toolbar = 1|0 . navpanes = 1|0 . scrollbar = 1|0
자바스크립트로 책을 보는 것처럼 책장 넘김 효과를 주는 방법 * http://www.coastworx.com/bookflip.php 첨부파일은 샘플을 받아 적용해본것임
책장을 넘기는 것처럼 jquery 로 효과를 주는 방법 * http://www.turnjs.com/ 해당 사이트에 가면 다양한 예제를 다운로드 할 수 있다
<a onClick="window.open('http://www.ytn.co.kr','','width=1000,height=700,toolbar=no,menubar=no,scrollbars=no,resizable=no,directories=no,status=no,location=no')" target='_blank' style="cursor:pointer;"><br> <b>* YTN'</b> </a>
좌우로 나뉜 DIV 화면을 마우스로 드레그 하여 크기를 조절하는 소스 <html> <head> <style type="text/css"> .d1 {float:left;width:50%;height:100%;border-right:1px solid #b8b8b8;margin-right:-1px;overflow-y:scroll;} .d2 {float:left;width:49%;height:100%;overflow-y:scroll;} .d3 {float:left;width:0.3%;height:100%;background-color:#888888;} #hr {cursor:pointer;} </style> <script type="text/javascript"> var startpos, diffpos=0, range=50; var isEnable = false; function on_mouse_down(e) { startpos = event.clientX + diffpos; isEnable
상하로 나뉜 DIV 화면을 마우스로 드레그하여 크기를 조절 <html> <head> <style type="text/css"> .div1 {position:relative; top:0; width:100%; height:200px;overflow:auto;} .div2 {position:relative; top:0; width:100%; height:200px;overflow:auto;} #middle {cursor:pointer;} </style> <script type="text/javascript"> var startpos, diffpos=0, eControl = false; function divMouseDown(e) { if (!document.all) startpos = e.screenY + diffpos; else startpos = event.clientY + diffpos; eControl = true; return false; } function divMouseUp
일단 SSH2 가 서버에 설치되어 있어야 한다. 키를 사용하여 서버에 연결하는 방법인데 키는 리눅스 서버에서 ssh-keygen -t rsa 명령어 를 사용하여 생성하면 된다. 명령어를 입력하면 파일명을 입력하라고 나오는데 패스와 파일명을 입력하면 된다. 그리고 passphrase 를 입력하라고 나오는데 그냥 엔터 그리고 엔터치면 키가 생성된다. 키를 잘못 생성하거나 passphrase 를 입력하면 아래와 같은 오류가 발생한다. * ssh2_auth_pubkey_file(): Authentication failed 아래는 연결하여 파일전송하는 소스이다. $pubKey = "/home/html/key.pub"; $priKey = "/home/html/key"; $conn = ssh2_connect('test.com', 1111); if (ssh2_auth_pubkey_file($conn, 'userid', $pubKey, $priKey)) echo "Public Key Authenti
아래글은 php 함수를 사용하는 방법이었고 이것은 개발된 라이브러리를 사용하는 방법이다. * http://phpseclib.sourceforge.net/ 사이트에 들어가면 자세한 설명이 있으니 생략하고 키를 만드는 방법은 puttygen.exe 를 사용하여 생성하면 된다.
root 계정으로 작업하였으며 유튜브 SFTP 연결을 위해 작업하였다. * sshd_config 수정 . 주석 해제후 해당 부분 수정 . 공개키 파일명 authorized_keys 로 변경하고 폴더를 지정한다 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys * sshd 서비스 재실행 . service sshd restart * 공개키 개인키를 /root/.sshd 폴더로 복사 후 권한 설정 . id_rsa, id_rsa.pub 이름으로 키를 폴더로 복사 . 권한 설정 - authorized_keys : 644 - id_rsa : 600 - id_rsa.pub : 644 - known_hosts : 644 * 서버에 공개키를 업로드하여 설정 . 유튜브는 관리자에 들어가면 공개키 파일 업로드 메뉴가 있음. . 예) scp /home/sunshiny/.ssh/id_rsa.pub ha
var dt; dt = new Date(); dt = dt.getFullYear() + "-" + (dt.getMonth() + 1) + "-" + dt.getDate(); 날짜 함수 - getFullYear() : YYYY - getMonth() : MM - getDate() : DD - getDay() : 0 ~ 6 (일 ~ 토) - getHours() : HH - getMinutes() : MM - getSeconds() : SS - getMilliseconds() : mmm 자리수 2자리 맞추기 (00을 붙여 뒤에서부터 2자리를 잘라 만듬) str = dt.getFullYear() + "-" + ("00" + (dt.getMonth() + 1)).slice(-2) + "-" + ("00" + dt.getDate()).slice(-2) + " " + ("00" + dt.getHours()).slice(-2) + ":" + ("00" + dt.getMinutes()).slice(