이 글은 공부하는 목적으로 

개인 프로젝트를 진행하며 남기는 일기형식입니다.

전문성 없는 맨땅에 헤딩하는 형식이므로 참고하시기 바랍니다.

OS : Windows 7


목표


윈도우에 쉽게 Apache,PHP,Mysql 설치 셋팅하기


◐ 요약

WAMP 를 이용해 쉽게 PHP 사용환경을 셋팅한다.




아파치 서버를 셋팅하는 방법은 검색에 널리고 깔렸다. 방법도 여러가지 있다.

하지만 나처럼 귀차니즘에 흠뻑 빠진 사람이라면 WAMP를 사용해보기 바란다.

클릭 몇번으로 서버를 구축할 수 있다.


우선 http://www.wampserver.com/en/ 이곳에서 각자에게 맞는 버전으로 다운로드 받는다.




팝업창에서 download directly 를 클릭하면 된다.


설치가 완료될 즈음 이 창이 나타난다.

기본 브라우져를 선택하라는 질문이다. 익스플로러만 깔려있기 때문에 이대로 저장한다.



완료 화면이다. 각 설치된 버전 정보가 함께 있다.



이곳 또는 모든프로그램에서 찾아서 시작한다.

그럼 오른쪽 하단 도구모음에 아이콘이 표시된다.



아이콘을 클릭하면 각각의 설정을 할수있는 창이 뜬다.

맨아래 Put Online 을 클릭하면 외부에서도 확인 할 수 있다. 오프라인은 로컬에서만 확인된다.

php.ini 파일도 여기서 열어서 수정한다. 수정후에는 반드시 재시작을 해야 적용된다.


메뉴에 보이는 Localhost 또는  phpMyAdmin 를 클릭해서 브라우져로 확인한다.

물론 창에서 주소를 직접입력해도 된다.



삭제는 제어판 > 프로그램제거에서 하면 된다.



Posted by myjamya :


이 글은 공부하는 목적으로 

개인 프로젝트를 진행하며 남기는 일기형식입니다.

전문성 없는 맨땅에 헤딩하는 형식이므로 참고하시기 바랍니다.

개발환경 : Mac OS, 이클립스


목표


GCM을 사용해서 푸시알림을 테스트한다.


◐ 요약

푸시알림을 받기위해 폰갭프로젝트를 생성하고

node.js 사용해서 푸시 테스트까지 진행한다.




푸시를 받을 수있는 폰갭프로젝트를 만들텐데

그전에 먼저 GCM API를 사용할수 있게 등록을 해야한다. 

자세한 방법은 검색으로 금방 찾을수 있다. 이 블로그에서는 다음에 소개하겠다.

1. https://console.developers.google.com/project 이곳에서 프로젝트를 생성하고

2. API 메뉴의 Cloud Messaging for Android 를 사용하게 한다.

3. 사용자 인증 정보 메뉴 > 공개 API 액세스 > 새 키 만들기  Android 키 & 서버 키 를 생성한다.


위 내용까지 준비가 되었으면 폰갭프로젝트를 생성하겠다.

$phonegap create pushdemo com.example.pushdemo PushDemo

$cd pushdemo

$phonegap local plugin add https://github.com/phonegap-build/PushPlugin.git

$phonegap build android


생성된 프로젝트를 이클립스에 import 시킨후 config.xml 파일을 연다.


맨 아래에 코드를 삽입하고 저장한다.

    <feature name="PushPlugin">

<param name="ios-package" value="PushPlugin"/>

      <param name="android-package" value="com.plugin.gcm.PushPlugin"/>

    </feature>


다음은 index.html 파일을 열고 다음 스크립트를 삽입한다.

중간에 GCM 프로젝트 넘버를 수정한다.

파일을 저장하고 난 후


터미널을 연다.

$phonegap local plugin add org.apache.cordova.device

$phonegap local plugin add org.apache.cordova.media

$phonegap build android

이클립스의 로그창을 보면 registerID 가 생성된걸 찾을수 있다.

테스트할때 써야 하니 복사해둔다.


이제 서버에서 푸시메세지를 보내는것을 테스트 해보겠다.

먼저 서버로 사용할 폴더를 설정하고 아래 명령어를 실행하면 폴더가 생성된다.

$npm install node-gcm


node_gcm 폴더가 있는곳을 찾아 들어가서

새로운 .js 파일을 생성한다. 이 파일은 테스트메세지를 보내게 된다.

파일명은 알아서 적당히 저장한다.

중간에 서버키와 아까 복사해둔 registerID 를 수정한다.

var gcm = require('node-gcm');


// create a message with default values

var message = new gcm.Message();


// or with object values

var message = new gcm.Message({

  collapseKey: 'PhoneGapDemo',

  delayWhileIdle: true,

  timeToLive: 3,

  data: {

    title:'PhoneGap 푸시 테스트',

    message: 'PhoneGap 푸시 메세지',

    msgcnt: 3

  }

});


var sender = new gcm.Sender('AIzaSyBH...'); // 구글 프로젝트에 등록한 GCM 서비스에서 만든 server API key를 입력한다.

var registrationIds = [];

registrationIds.push('APA91...'); // PhoneGap 프로젝트의 안드로이드 프로젝트에서 획득한 registerID를 입력한다. 이 registerID를 이용하여 안드로이드 디바이스에 푸시를 전송한다.


/**

 * Params: message-literal, registrationIds-array, No. of retries, callback-function

 **/

sender.send(message, registrationIds, 4, function (err, result) {

  console.log(result);

}); 


이제 메세지를 보내 보도록 하겠다.

작업 컴퓨터에 nodejs 가 설치 되어있어야 한다.

$node sf-push-provider.js


가상 에뮬레이터 또는 테스트폰에서 알림이 온걸 확인할수 있다.

부디 성공하길 바란다.

Posted by myjamya :


이 글은 공부하는 목적으로 

개인 프로젝트를 진행하며 남기는 일기형식입니다.

전문성 없는 맨땅에 헤딩하는 형식이므로 참고하시기 바랍니다.

개발환경 : Mac OS


목표


안드로이드 하이브리드앱을 제작하기 위해 개발환경을 만든다.


◐ 요약

이전 과정까지 하고 이클립스에 프로젝트를 import 할때 생겼던 문제들

아직 원인을 알지 못하고 해결방안도 찾지 못했다.

임시방편으로 프로젝트를 진행할 수 있는 방법을 남겼다.

해결책을 찾으면 추가해 놓겠다.




1. 이클립스 import 시 프로젝트명에 엑스표시가 뜬다.

이전 글에서 했던데로 프로젝트를 생성하고 터미널로 실행했을때 정상적으로 나오는데는 문제가 없었다.

그런데 만들어진 프로젝트를 이클립스에 import 하고 보니 안된다.

분노2

이클립스의 프로젝트명에 빨간색으로 오류가 있다는 표시가 나왔다.

src > 패키지명 > CordovaApp.java 파일을 연다.

import org.apache.cordova.*; 위에 마우스를 올리면 메뉴창이 올라오는데

Fix project setup... 을 클릭한다. 그런다음....

Add Project "CordovaApp-CordovaLib~ 를 선택하면 에러표시가 사라진다.

이제 디버그하면 확인할 수 있다.



2. index.html 수정 적용안됨

폰갭으로 생성된 프로젝트의 www > index.html 파일을 열어서 내용을 변경하고 디버그 했는데

내용이 안바뀐다. 제길~

터미널을 열고 실행하니 변경된 내용이 적용되서 나온다.

$cd 프로젝트폴더이동

$phonegap run android

귀찮긴 하지만 일단 터미널창을 옆에 두고 이런식으로 실행 확인 해야겠다.


3. 한글깨짐

겨우 인덱스 내용을 수정하고 확인했는데 한글이 깨진다.

안들려

이클립스의 preferences > workspace > text file encoding

UTF-8 로 변경하고 다시 실행해보니 한글도 제대로 나온다.


Posted by myjamya :


이 글은 공부하는 목적으로 

개인 프로젝트를 진행하며 남기는 일기형식입니다.

전문성 없는 맨땅에 헤딩하는 형식이므로 참고하시기 바랍니다.

개발환경 : Mac OS


목표


안드로이드 하이브리드앱을 제작하기 위해 개발환경을 만든다.


◐ 요약

안드로이드앱을 만들기 위해 필요한것들을 설치

1. 자바JDK 설치

2. 이클립스 설치

3. 안드로이드 SDK , AVD 설치

4. 기타 하이브리드앱을 위한 node.js, phonegap, cordova 설치 


마지막으로 데모페이지를 띄워보는것까지 진행한다.




먼저 나의 작업용 노트북은 

맥북에어 OS X Yosemite 이다.

설치 및 셋팅 과정에서 왜 이렇게 하는지 무슨뜻으로 하는지 모르는것도 많다.

그냥 결론적으로 어플을 만들수 있게만 묻지말고 설치해 본다.



1. 자바JDK 설치

 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


이건 내가 준비하면서 설치했는지, 기존에 있었던건지 기억이 나질 않는다. 

하지만 필요한거기 때문에 반드시 설치하도록 한다.



2. 이클립스 설치 

http://www.eclipse.org/downloads/



둘 중에 아무거나 받아서 설치 했다. 기억에 32 Bit 로 했던것 같다.

설치후 실행해보면 이클립스의 개발창을 확인할 수 있을것이다. 작업화면은 직접 확인하시길...



3. 안드로이드 SDK

SDK 가 설치되면 꽤 많은 하드디스크 용량을 차지한다. 각자 컴퓨터의 공간을 넉넉하게 하기 바란다.

안드로이드 2.2 프로요

안드로이드 2.3 진저브레드

아직 안드로이드의 저사양 버전을 사용하고 있는 기기들이 많다고 한다.

그래서 낮은사양에서도 앱이 호환되는지 확인을 위해 둘중 하나를 선택해야 한다.

프로요는 이제 없어지는거 같고...최저사양으로 진저브레드를 선택한다.

그리고 최신 안드로이드 또는 가장 많이 점유하고 있는 안드로이드 버전을 선택하고 설치한다.

참고로 나는 안쓰는 옵티머스GPro 를 테스트 기기로 사용하고 있다. 버전은 4.4.2 이다.


첫번째 방법으로

 http://developer.android.com/sdk/index.html#Other 이곳에서 직접 파일을 받아 압축을 풀고 

Eclipse > Preferences(환경설정) > Android 탭에서 폴더 경로를 선택하는 방법




두번째 방법으로

이클립스의 Help > Install New Software.. 



Add..버튼을 누르고

Name : 저장될 경로 폴더명

Location : https://dl-ssl.google.com/android/eclipse/

위와 같이 입력하고 OK 하면 

안드로이드 어플을 개발하기 위한 개발자툴과 여러가지 필요한 것들이 표시된다.

전부 체크 하고 설치 진행 한다. 


설치후 sdk관리는 

이클립스의 Window > Android SDK Manager



여기서 추가 / 삭제 하면 된다.


마지막으로 안드로이드 sdk의 path 설정을 한다. 터미널을 연다.

$cd 홈경로

$touch .bash_profile

$open -e .bash_profile

파일이 열렸으면 

export PATH=$PATH:/Users/SDK경로/platform-tools:$PATH:/Users/SDK경로/tools/

입력후 파일을 저장하고 닫는다.

$source ~/.bash_profile

배쉬파일을 저장한다.



4. 기타

위에까지 하면 안드로이드 네이티브 어플을 만들수 있다.

하지만 하이브리드앱을 만들려면 phonegap을 사용하기 위해 기타 여러가지를 설치한다.


[node.js]

http://nodejs.org/download 

.pkg 를 다운받아 그냥 설치했다.


[brew]

터미널에서 명령어를 사용하기 위해 하는것 같다. 우선 터미널을 열고 

최신버전으로 업데이트

$brew update


[ant]

$brew install ant


[phonegap & cordova]

$sudo npm install -g phonegap

컴퓨터 비밀번호

$sudo npm install -g cordova 

컴퓨터 비밀번호



* 데모페이지

위의 내용까지 설치 셋팅이 끝났다면

폰갭의 기본프로젝트를 만들고 실행해보겠다.

터미널을 열고

$cd 프로젝트 저장할 폴더로 이동

$phonegap create hello com.example.hello HelloWorld

hello 폴더이름으로 HelloWorld 이클립스 프로젝트를 생성한다. 

중간 com.example.hello 는 생성된 프로젝트의 패키지명이다.

계속해서...

$cd hello

$phonegap build android

$phonegap run android

생성된 hello 폴더로 이동한 후

폰갭으로 안드로이드 빌드 시킨다.


테스트 기기로 확인을 하려면 

안드로이드폰 설정의 개발자도구에서 USB디버깅 옵션을 선택하면 된다.


이 결과물을 볼수 있길 바란다......

Posted by myjamya :


이 글은 공부하는 목적으로 

개인 프로젝트를 진행하며 남기는 일기형식입니다.

전문성 없는 맨땅에 헤딩하는 형식이므로 참고하시기 바랍니다.

개발환경 : Mac OS


목표


안드로이드 하이브리드앱을 제작하기 위해 개발환경을 만든다.


◐ 요약

하이브리드앱을 제작하기 위해서 필요한것들을 검색하고 셋팅 준비를 한다




타의에 의해 하게된 프로젝트이지만 진행되는 내용을 남기기 위해 포스팅을 시작한다.

여러가지 검색으로 정보를 찾아보고 있지만 

앱 제작에 대해 무지한지라 정보를 보고도 무슨말인지 빨리 이해가 되지 않는다.


우선 아이폰앱은 하지않고 안드로이드앱으로 만들려고 한다.

설치해야 할것 : 이클립스, 자바 JDK, 안드로이드 SDK, node.js, phonegap(또는 cordova)


요새는 다른 프로그램(안드로이드 스튜디오) 으로도 안드로이드 어플을 제작할 수도 있다는데,

아직 보편적으로 많이 사용하는 이클립스로 준비한다.


설치 과정이나 방법은 검색으로 쉽게(?) 찾을수 있다.

하지만 내가 작업하는 노트북은 맥북에어...윈도우 기준으로 대부분 설명이 되어있고 찾았다해도 설치과정을 알기쉽게 풀어놓은곳을 찾을수 없었다.

이곳저곳에서 조합하고 찾아가며 어쨌든 실행해보는데까지 성공했지만 역시 이해는 안된다.

다음 글에서는 묻지말고 시키는대로 설치해보는 시간을 갖도록 하겠다.


Posted by myjamya :

자바스크립트로 input text 내용을 읽어올때 앞뒤 공백을 제거하는 방법은 여러가지가 있겠지만 아래의 코드를 공통 js 에 적어놓음으로써 모든 곳에서 trim() 을 사용할 수 있습니다.

1
2
3
4
5
if(typeof String.trim=="undefined"){
 String.prototype.trim=function(){
  return this.replace(/(^\s*)|(\s*$)/g,"");
 }
}

사용은 document.formname.inputname.value.trim(); 이런식으로 합니다. 모든 브라우져에서 테스트를 해보진 않았지만 제가 사용하고 있는 ie8, chrome 환경에서 정상적으로 작동 되었습니다.

Posted by myjamya :

이번에 신규 사이트 작업 하면서 처음으로 utf-8 포멧으로 작업을 했는데

한글 깨지는 문제가 발생했다.

처음에는 소스파일포멧만 utf-8로 하면 될거라 생각했지만

form 전송과 DB연동되는 부분은 여지없이 한글이 깨지고 말았다.

특히 form enctype="multipart/form-data" 일때 파일포멧에 상관없이 한글이 깨졌다.


우선 파일포멧을 utf-8로 저장하고 포멧을 선언해주는 소스를 찾아서 넣었다.

 <%@ codepage="65001" language="VBScript" %>
<%
Response.charset = "utf-8"
Response.ContentType="text/html"
Session.CodePage=65001
%>

위의 소스는 모든 소스의 최상단에 위치 해야한다. 안그럼 오류가 발생하기 때문에...

이걸로 asp 작업에서 한글이 깨지는 일은 없어졌다.


또 한가지의 문제 아직 한국의 사이트 제작 작업의 대부분이 euc-kr 로 작업되고 있어서인지

부가적으로 추가되는 모듈(sms,실명인증.....등)과 utf-8 호환이 안되는것들이 많은것 같다.

사이트 포멧 utf-8 에서 euc-kr 포멧에 맞춰진 sms 모듈을 http 호출로 전송해보니 한글이 깨져서 전송되었다.


그래서 utf-8 페이지에서 내용을 전송하기전 한글을 escape(string) 한 후

http 호출 하는 페이지를 euc-kr로 파일 포멧하고 받는 내용을 unescape(request_string) 하였다.

이걸로 한글이 정상적으로 전송되고 작업은 마무리 되었다.


Posted by myjamya :

이번 문제의 발생은 회원데이터가 연동되어있는 서로 다른 서버에 실명인증서비스를 추가 하는 과정에서 한쪽 서버에 DLL을 설치 할 수 없는 상황이 되어버렸다.


따라서 한쪽 서버에 설치되어있는 모듈을 이용해서 설치가 안되는 사이트의 인증을 하기 위해 사용한 방법이다.


검색을 통해서 자바스크립트로 다른 여러 방법을 시도 해봤지만 잘 되지 않아서 결국 무식한 방법을 써야 했다.


우선 a.com 과 b.com 두개의 사이트가 있다. b.com 은 서버에 DLL을 설치 할수 없어서 인증과정을 진행할 수 없다.


// b.com 페이지에서 a.com 의 인증할 수 있는 페이지를 팝업창으로 띄운다.
pccwin = window.open("","pccV4","width=500,height=500");
form.target = "pccV4";
form.action = "http://a.com/pccV4_sample_seed.asp";

// http://a.com/pccV4_sample_seed.asp 이곳에서 실명인증과정이 진행되고 리턴값으로 DI(가상주민등록번호) 를 받게 되는데 

opener.document.form.di.value = return_value;
// 이 경우 b.com 에서 a.com 페이지를 팝업으로 오픈한 것이라  도메인이 틀려서 opener 가 엑세스 할 수 없다는 에러가 나온다.


여기서 부터가 문제다. opener를 쓸 수 없는 상황에서 부모창에 리턴값을 전달해야 한다.


그래서 인증이 진행된 a.com 팝업창에서 결과값을 리턴받았을때 이 값을 다시 form post 로 b.com 이 리시브 페이지로 전달하고 이곳에서 opener 를 사용하기로 하였다.


 // 팝업창에서 인증이 진행된 후 http://a.com/pccV4_result_seed.asp 로 DI 값이 리턴 되었다.
<form name="frm" method="post" action="http://b.com/receive.asp">
<input type="hidden" name="return_di" value="<%=di%>">
</form>
<script>document.frm.submit();</script>
// 이하 http://b.com/receive.asp
<%
di_value = request.form("return_di")
%>

<script>
opener.document.form.di.value = "<%=di_value%>";
self.close();
</script>
// 팝업을 띄운 b.com과 DI값을 전달받은 b.com/receive.asp 가 같은 도메인이기 때문에 opener 전달이 정상적으로 되었다.

Posted by myjamya :

 

// 팝업창이나 하위프레임에서 상위 객체를 셀렉트 하는 방법
 $("#id",opener.document).css("display","none");
 $("#id",parent.document).css("display","none");
Posted by myjamya :