PHP + Google Translate API 연동하기

Progmming/PHP|2018.05.04 13:19

PHP + Google Translate API 연동하기



Google translate document site

https://cloud.google.com/translate/docs/?hl=ko



Google 에서 제공되는 샘플 소스

https://github.com/GoogleCloudPlatform/php-docs-samples/tree/master/translate


 

하지만 그냥 최소한의 코딩으로 처리를 하고자 했기 때문에..


php 함수를하나 만듬.


function translate($content) { $handle = curl_init(); curl_setopt($handle, CURLOPT_URL,'https://www.googleapis.com/language/translate/v2'); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false); $data = array('key' => "API Key", 'q' => $content, 'source' => "ko", 'target' => "en"); curl_setopt($handle, CURLOPT_POSTFIELDS, preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', http_build_query($data))); curl_setopt($handle,CURLOPT_HTTPHEADER,array('X-HTTP-Method-Override: GET')); $response = curl_exec($handle); $responseDecoded = json_decode($response, true); $responseCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); curl_close($handle); return $responseDecoded['data']['translations'][0]['translatedText']; }


사용을 위해 신용카드 등록이 필요하지만 처음 등록 할 경우 300달러가 제공되니 참고해주세요.

댓글(0)

php 쿼리결과에 대한 결과 행이 있는지 여부, sqlsrv_has_rows / sqlsrv_num_rows

Progmming/PHP|2018.04.26 11:02

mysql 을 오랜만에 사용할 기회가 있어서 처리중에...


데이터 갯수를 체크해야 했는데 mssql 에서 하던대로 count 해서 데이터 갯수를 체크하려고 했으나


sqlsrv_num_rows 함수를 이용하니 결과 값이 빈값이 찍히는 상황.


확인해보니 sqlsrv_num_rows 결과 값을 리턴 받기 위해서는 커서 타입을 지정해야함.


단순 쿼리 결과 값이 있는지 여부를 체크하는 함수가 있더라는..



sqlsrv_has_rows 


- 쿼리결과에 대한 결과 행이 있는지 여부 .  return : bool


php manual : http://php.net/manual/en/function.sqlsrv-has-rows.php


<?php


    $server 
"serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName""UID"=>"username""PWD"=>"password" )
    $conn sqlsrv_connect$server$connectionInfo );

    $stmt sqlsrv_query$conn"SELECT * FROM Table_1");

    if (
$stmt) {
       
$rows sqlsrv_has_rows$stmt );
       if (
$rows === true)
          echo 
"There are rows. <br />";
       else 
          echo 
"There are no rows. <br />";
    }
?>




sqlsrv_num_rows

- 쿼리 결과에 대한 행의 갯수 .  
커서 타입을 SQLSRV_CURSOR_KEYSET 또는  SQLSRV_CURSOR_STATIC 으로  
지정해주어야 결과 값을 가져올 수 있음.


<?php
    $server 
"serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName""UID"=>"username""PWD"=>"password" );
    $conn sqlsrv_connect$server$connectionInfo );

    $sql "SELECT * FROM Table_1";
    $params = array();
    $options =  array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
    $stmt sqlsrv_query$conn$sql $params$options );

    $row_count sqlsrv_num_rows$stmt );
   
    if (
$row_count === false)
       echo 
"Error in retrieveing row count.";
    else
       echo 
$row_count;
?>

댓글(0)

MS-SQL Linked Server 사용자 매핑 설정하는 방법 ( 접속자별 권한 설정 )

DataBase/MS-SQL|2018.04.24 11:05

MS-SQL Linked Server  사용자 매핑 설정하는 방법 ( 접속자별 권한 설정 )



개요 


사용자 매핑을 사용하지 않고 단순 원격서버에 대한 로그인정보로 Linked Server를 연결하여 보안 셋팅 없이 경우 모든 사용자가 Linked Server에 대한 권한을 동일하게 갖게 되므로 보안 이슈가 발생할 수 있다.



▼ 흔히 인터넷상에서 알려주는 Linked Server 연결 방법.




문제점 확인 및 문제 발생 상황


위와 같은 방법으로 Linked Server를 설정 할 경우 모든 사용자가 같은 계정으로 원격 서버에 접속하기 때문에 여러 권한 관련 보안 이슈가 발생할 수 있게 된다.


DBA가 없는 규모가 작거나 사수가 없는 경우 혹은 별도 교육을 통하지 않는 경우 사실상 세부 옵션을 알아서 사용하기가 어렵기 때문에 위의 방법으로 연결해서 사용하던 때가 있었으나 외부에 뷰테이블 형태로 제공되는 서비스가 생기면서 해당 이슈가 발생되었다.



Linked Server 권한 문제 해결방법


해결방법은 이미 위에 옵션 화면에 노출되어있는데 

로컬 서버 로그인과 원격 서버 로그인 매핑 옵션을 이용해야한다.




이말은 SQL Server에 로그인된 사용자 별로 Linked Server 연결 아이디를 다르게 하고 매핑에 등록되지 않은 사용자의 경우 아래에 옵션에 해당하는 연결을 한다는 의미이다.

  • 연결안함.
  • 보안컨텍스트 없이 연결
  • 로그인의 현재 보안 컨텍스트를 사용하여 연결
  • 다음 보안 컨텍스트를 사용하여 연결




로컬 로그인 사용자를 선택하고 원격 사용자와 암호를 입력한다.

로컬 로그인의 경우 등록된 계정을 사용하기 때문에 콤보박스에서 선택하면 됨.




입력된 결과이며 여러개 중복 등록이 가능하므로 사용자 별로 Linked Server 의 접속 계정을 설정하여 권한 및 보안 설정이 가능하다.

그리고 그외의 접속에 대해서는 연결을 하지 않거나 하는 등의 설정이 아래 옵션에서 처리가 가능하니 참고.





상세한 내용은 아래 링크를..


https://docs.microsoft.com/ko-kr/previous-versions/sql/sql-server-2008-r2/ms188477(v%3dsql.105)

댓글(0)

waiting for available sockets / 사용 가능한 소켓 대기 중 , 에러(?) 원인과 해결

에러노트|2018.03.30 14:17



인터넷 브라우저 사용 중 볼 수 있는 오류 메시지

 

"사용 가능한 소켓 대기 중"


내용을 알고보면 이것을 에러라고해야할지..대기중인것으로 봐야할지..모호합니다.


  • waiting for available sockets 

  • 사용 가능한 소켓 대기 중



알려진 원인


  • 기본적으로 오버로드 이미지 및 크롬에 저장된 데이터로 인해 발생합니다. 
  • 크롬에 저장된 쿠키와 이미지가 커지면서 발생합니다.
  • 사이트를 열 때마다 브라우저에 임시로 쿠키 및 이미지가 저장 될때 과부하에 걸리면 소켓 오류가 발생합니다.
  • 열린 소켓갯수가 제한된 숫자보다 많은 경우 대기합니다.

해결 방법

  1. 크롬에서 chrome://net-internals/#sockets 설정 페이지로 이동 한 후 Close idle sockets , Flush socket pools 버튼으로 열려있는 소켓을 닫아주거나 소켓을 초기화 해주는 방법.




    ▼ 현재 연결된 소켓에 대한 목록이 보입니다. transfer , ssl 두가지 타입으로 나뉘어 보입니다.



  2. 쿠키 및 캐시를 삭제
  3. 크롬 확장 기능 및 도구 모음을 지우거나 비활성화.

댓글(0)

Javascript , Data URL을 이용한 엑셀 파일 생성하기

Open API/그 외|2018.02.21 17:12





javascript 에서 테이블 구조의 html을 전달 받아 Excel 파일을 생성하는 함수 입니다.


기본적으로 서버에서 만들어진 내용을 다운받도록 하지만 

클라이언트 쪽에서 바로 xls 파일을 생성 할 수 있도록 하는 방법입니다.

기본문법 : data:[<mediatype>][;base64],<data>



    
function fnExcelReport(cont, fileName)
{
	var ua = window.navigator.userAgent;
         
	if ( (navigator.appName == 'Netscape' && ua.search('Trident') != -1) || (ua.indexOf("msie") != -1) )       // IE
	{
		newWin = window.open();
		newWin.document.open("txt/html","replace");
		newWin.document.write(cont);
		newWin.document.close();
		newWin.focus();
		newWin.document.execCommand("SaveAs", true, fileName + ".xls");
		newWin.close();
	}
	else   //other browser
	{
		var a = document.createElement('a');
		var data_type = 'data:application/vnd.ms-excel';
		a.href = data_type + ', ' + encodeURIComponent(cont);
		a.download = fileName+'.xls';
		a.click();
		e.preventDefault();
	}
}


상세 내용은 MDN 웹 Document 를 참조하세요.


링크 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs

댓글(0)

[크롬 웹스토어] 크롬 Hosts 설정 개발도구

추천 정보|2018.01.15 18:12

[크롬 웹스토어] 크롬 Hosts 설정 개발도구


개발을 하다보면 Hosts 파일을 수정합니다.

그때마다 수정하는것도 일이고 옮겨가는 자리마다 혹은 포맷이라도 할때면 정말 귀찮은 일인데요.

크롬 애드온에 이러한 어려움을 간편하게 해결해주는 애드온이 있어서 소개합니다.



급하신 분들을 위한 링크 선투척 


Host Switch Plus


https://chrome.google.com/webstore/detail/host-switch-plus/bopepoejgapmihklfepohbilpkcdoaeo


설정은 굉장히 직관적입니다.






추가된 아이콘을 누르면 추가 / 관리 메뉴가 보입니다. 





관리 화면에 들어가면 Add / Bulk Add / Hosts 탭이 있습니다.


항목자체는 보이는 그대로 매우 직관적이기 때문에 사용하기 너무 쉽네요.





입력 하신 다음 반드시 빨간색 박스친 곳을 클릭해주셔야 활성화 됩니다.


기본은 회색으로 비활성화되어있습니다.








소소한 개발을 위한 팁이 될것같네요.



댓글(0)

Google Cloud Platform 웹 셋팅 후 접속이 안될 때 해결 방법

Cloud Server|2017.11.14 11:33

클라우드 서버로 서비스 이관을 위해 Google / MS / Alibaba / 아마존 4개의 클라우드를 테스트 중


대부분의 클라우드서버 구조가 그렇듯이 VM머신 앞단의 네트워크 방화벽이 우선이기 때문에 


관리페이지에서 해당 서비스의 방화벽 해제가 필요함.



일부는 포트를 지정하도록 하는 경우도 있고 어떤 경우는 서비스별로 체크하여 사용하는 경우가 있으니 


해당 VM 인스턴스의 세부 정보에서 아래 2개 항목에 체크를 해야함.


클라우드 서버내에서 방화벽을 해제 하더라도 무의미함.




댓글(0)

[에러노트] 사용자 'sa'이(가) 로그인하지 못했습니다. 이 사용자는 트러스트된 SQL Server 연결과 관련되어 있지 않습니다. (Microsoft SQL Server, 오류: 18452)

에러노트|2017.09.21 15:49

MS-SQL 설치 후 로그인 시 에러 메시지



아래와 같은 오류 메시지가 뜨고 로그인이 되지 않는 문제.


사용자 'sa'이(가) 로그인하지 못했습니다. 이 사용자는 트러스트된 SQL Server 연결과 관련되어 있지 않습니다. (Microsoft SQL Server, 오류: 18452)


도움말을 보려면 다음을 클릭하십시오: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=18452&LinkId=20476





 Login failed for user 'sa'. The user is not associated with a trusted SQL Server connection. (Microsoft SQL Server, Error: 18452) 


 For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=18452&LinkId=20476



초기 설치시에는 기본 MS-SQL 서버 인증 상태가 Window 인증 모드로 되어있기 때문에


Sa 로 로그인 하려면 옵션을 변경해주어야 합니다.


서버 속성에서 보안 > 서버 인증 >  SQL Server 및 Windows 인증모드로 설정해줍니다.

(SQL Server and Windows Authentication mode)






댓글(0)

jquery ajax 동기처리가 안되는 경우.. async 옵션이 적용 안될 때.

Open API/Jquery|2017.09.20 18:59

jQuery ajax 옵션중에는 async 옵션이 있습니다.

이것은 기본적으로 ajax가 비동기 처리를 하지만 필요에 따라 동기 요청을 하기 위한 옵션이지만

최근 경험상 적용이 되지 않는 것이 확인되어 api 사이트를 확인해보니 

아래와 같은 내용이 확인이 됩니다.


크로스 도메인일 경우 데이터 타입이 jsonp라면 지원되지 않는다. 

위의 조건 외에도 1.8 버전 이후부터 지원되지 않음이라고 명시되어있고 

콜백 함수를 이용하도록 명시가 되어있으니 

1.8버전 혹은 최신 버전을 사용하는 경우 문제가 될 것같습니다.


그런데...되는 경우도 있고..안되는 경우도 있고...모호하네요.


확실하게 그냥 콜백 함수를 사용해야겠습니다.


 

  async (default: true)
  Type: Boolean
By default, all requests are sent asynchronously (i.e. this is set to true by default). If you need synchronous requests, set this option to false. Cross-domain requests and dataType: "jsonp"requests do not support synchronous operation. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active. As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done().


http://api.jquery.com/jQuery.ajax/

댓글(0)

[에러노트] [DBNETLIB][ConnectionOpen (Connect()).]SQL Server가 없거나 액세스할 수 없습니다.

에러노트|2017.09.19 18:20

업무용 PC를 포맷하고 MS-SQL Express 2012 버전 설치 이후 연결하려고 하면 



아래와 같은 오류 메시지가 뜹니다.



[DBNETLIB][ConnectionOpen (Connect()).]SQL Server가 없거나 액세스할 수 없습니다.





해결 방법 : 


1. SQL Server 구성 관리자 실행.



2.  SQL Server 네트워크 구성 > SQLEXPRESS 에 대한 프로토콜 선택


( 아래 사진 참고 )




3. TCP / IP 속성 > IP 주소 > IPAll > TCP 동적 포트 입력란에 1433 입력.


( 아래 사진 참고 )







위와 같이 수정하면 접속이 됩니다.


매번 포맷하고 나서 설치 할때 마다 이러고 있는데


저장 / 공유용으로 기록을 남깁니다.


댓글(0)