[Linux] root 계정의 ssh 원격접속 제한하기

/etc/ssh/sshd_config 에서 PermitRootLogin yes를 찾아서 PermitRootLogin no로 수정한 후

sshd demon을 재시작한다.

service sshd restart

Posted by incree

2014/08/07 02:14 2014/08/07 02:14
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/348

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

단기간에 너무 많은 api 호출을 한 경우에 limit가 걸리면

이 후 요청하는 모든 api 호출에 이 에러가 리턴되고, 30분동안 블럭된다.


해결 방법은 '다른 아이디를 이용하거나 30분 후에 다시 시도하면 된다' 라고 페이스북 개발자 페이지에 나온다.

https://developers.facebook.com/docs/reference/ads-api/api-rate-limiting


실제 리턴되는 에러 메시지
/**/ FB.__globalCallbacks.f1765e9214({"error":{"message":"(#17) User request limit reached","type":"OAuthException","code":17}});

Posted by incree

2014/07/28 17:42 2014/07/28 17:42
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/346

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

Facebook 탭앱 관리를 Graph API를 사용해서 하고 있었는데,

잘되던 탭앱 custom_name, custom_image_url 수정이 어느날부터 갑자기 에러가 나기 시작했다.

에러는 다음과 같았다.

[error] => Array
(
[message] => (#210) Subject must be a page.
[type] => OAuthException
[code] => 210
)

해결은 파라미터에 추가로 access_token을 넘겨줘서 처리했다.

기존에는 따로 안 넘겨줘도 잘 작동했었는데, 왜 어느날 갑자기 바뀐걸까?

처음 개발하면서 테스트 해봤을때 access_token을 넘겨주나 안 넘겨주나 똑같이 잘 작동해서

curl시에 api에서 알아서 access_token을 추가해서 처리하는 줄 알았는데, 그게 아닌가보다

수정전
$postArray = array('custom_name' => $custom_name);
$fbObj->api('/' . $pageId. '/tabs/app_' . $tabappId, 'POST', $postArray);
===============>
수정후
$postArray = array('custom_name' => $custom_name, 'access_token' => $pageAccessToken);
$fbObj->api('/' . $pageId. '/tabs/app_' . $tabappId, 'POST', $postArray);

Posted by incree

2014/07/25 11:40 2014/07/25 11:40
, , , , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/343

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

구글 캘린더 목록 가져오기

Google APIs Client Library for PHP download

<?php
require_once 'Google/Client.php';
require_once 'Google/Service/Calendar.php';

$client = new Google_Client(); 
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
$client->setScopes(array('https://www.googleapis.com/auth/calendar.readonly', 'https://www.googleapis.com/auth/calendar'));

$cal = new Google_Service_Calendar($client);

$calList = $cal->calendarList->listCalendarList();
    $_SESSION['token'] = $client->getAccessToken();

    $items = $calList->getItems();
    $itemsLen = sizeof($items);

    for($i = 0; $i < $itemsLen; ++$i) {
        echo $items[$i]['id'], ' : ' . $items[$i]['summary'], '<br />';
    }
?>



$client_id = '<YOUR_CLIENT_ID>';
 $client_secret = '<YOUR_CLIENT_SECRET>';
 $redirect_uri = '<YOUR_REDIRECT_URI>';
/*
위 세 변수 값은 Google Developers Console에서 프로젝트 선택후
APIS & AUTH -> Credentials 에서 OAuth 의 Create New Client ID 클릭해서 생성하면 된다.
*/

사용자 삽입 이미지

Posted by incree

2014/07/07 15:02 2014/07/07 15:02
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/338

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

api 문서의 예제가 전부 옛날거라서

직접 라이브러리 분석해서 처리한 방법

정상적인 방법인지는 모르겠지만, 등록은 잘 된다.

구글 캘린더 일정 등록하기

Google APIs Client Library for PHP download

<?php
require_once 'Google/Client.php';
require_once 'Google/Service/Calendar.php';

$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
$client->setScopes(array('https://www.googleapis.com/auth/calendar.readonly', 'https://www.googleapis.com/auth/calendar'));

$cal = new Google_Service_Calendar($client);

$calendarId = ''; //
$targetDate = '2014-07-07';
$tDate = new Google_Service_Calendar_EventDateTime();
$tDate->setDate($targetDate);
   
$body = new Google_Service_Calendar_Event();
$body->setSummary($cTitle);  // 일정 제목
$body->setStart($tDate); // 일정 시작
$body->setEnd($tDate); // 일정 종료
   
$cal->events->insert($calendarId, $body);
?>







$client_id = '<YOUR_CLIENT_ID>';
 $client_secret = '<YOUR_CLIENT_SECRET>';
 $redirect_uri = '<YOUR_REDIRECT_URI>';
/*
위 세 변수 값은 Google Developers Console에서 프로젝트 선택후
APIS & AUTH -> Credentials 에서 OAuth 의 Create New Client ID 클릭해서 생성하면 된다.
*/

사용자 삽입 이미지

Posted by incree

2014/07/07 14:54 2014/07/07 14:54
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/337

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

구글 캘린더가 처음 나왔을때 몇년 사용하다 아이폰 사면서 기본으로 제공되는 캘린더 앱을 사용했었는데,

요즘 다시 구글 캘린더를 사용하게 됐다.

구글 캘린더의 가장 아쉬운 점이 음력 일정을 입력할 수 없다는 건데,

이 부분은 api를 이용해서 구현해 놓은 곳이 있다.

http://googlelunar.cpueblo.com/

하지만 일정의 반복 설정등을 할 수 없어서 여전히 불편하기는 하다.

이 부분은 구글에서 제공해 주지 않으면 처리하기가 힘들지 않을까 싶다.

개인적으로 그 다음 있었으면 하는 기능이 D-day 기능인데,

이건 찾아봐도 구글 캘린더 기본 기능에도 없는 것 같고, 구현해 놓은것도 못 찾았다.

해서 그냥 만들기로 했다.

캘린더 API(https://developers.google.com/google-apps/calendar/?hl=ko)에 있는 라이브러리와 예제 소스가 전부 예전 버젼이라

구현하는데 좀 애를 먹긴 했지만, 완성하고 나니 제법 쓸만하다.

물론 귀찮아서 아주 기본적으로 딱 필요한 것만 구현했다.

피드백이 있다면....시간내서 기능을 보강할 수도....


사용은 여기로~~
구글 캘린더 D-day 등록하기(http://www.incree.com/gCalendar/)

사용자 삽입 이미지
완전 허접한 화면 스샷

Posted by incree

2014/07/07 14:49 2014/07/07 14:49
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/336

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[PHP] source file encode, decode



Posted by incree

2014/05/07 06:44 2014/05/07 06:44
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/328

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

mysql user defined global variables

기본으로 제공하는 mysql 기능에는 global 사용자 변수를 설정할 수 없다.

udf로 처리해야 한다.

https://github.com/jedisct1/MySQL-global-user-variables-UDF

Posted by incree

2014/05/07 00:22 2014/05/07 00:22
, , , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/327

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[Android] short array to byte array

public byte[] shortArray2byteArray(short[] shortArray) {
    int shortArraySize = shortArray.length;
    byte[] byteArray = new byte[shortArraySize * 2];
    for (int i = 0; i < shortArraySize ; i++) {
        byteArray [i * 2] = (byte) (shortArray[i] & 0x00FF);
        byteArray [(i * 2) + 1] = (byte) (shortArray[i] >> 8);
    }
    return byteArray ;
}

Posted by incree

2014/04/28 05:07 2014/04/28 05:07
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/326

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[Android] TextToSpeech 버그(??)

TextToSpeech를 이용해서 앱을 개발하고 있는데,

영어 문장을 읽는데, 꼭 한국 사람이 영어 말하는 것처럼 발음이 재생됐다.

onInit 에서

if (tts.isLanguageAvailable(Locale.US) == TextToSpeech.LANG_AVAILABLE)
                tts.setLanguage(Locale.US);
로 언어를 세팅하는 코드를 넣었는데, 이 부분이 정상적으로(?) 작동하지 않았다.

조건문의 isLanguageAvailable 가 0을 리턴해야 정상적으로 실행이 되는데,

1이 리턴되었다.

인터넷 열심히 뒤져서 가져다 쓴 코든데,코드가 잘못 되었다.

아래 doc 문서 보면 위와 같이 사용해도 정상 작동해야 되는데,

http://developer.android.com/reference/ ··· ale.html
public static final Locale US Locale constant for en_US.

버그인지 아니면 폰의 특성을 타는지 정상작동하지 않았다.

Locale enUs = new Locale("en_US");
            if (tts.isLanguageAvailable(enUs) == TextToSpeech.LANG_AVAILABLE)
                tts.setLanguage(enUs);

이렇게 수정해야 정상작동 되었다.

문서상으로는 둘다 같은 코드인데......

왜 아래만 작동할까? 버그일까?



Posted by incree

2014/04/22 01:18 2014/04/22 01:18
, , , , , , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/325

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

« Previous : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : ... 14 : Next »