지금은 i-pin 시대! 라는걸 증명하듯 핸드폰 실명 인증 / 아이핀 인증 적용 작업을 하고 있는데..  나이스..어쩌구에서 api를 받아서 하고있다. 기존의 inicis와는 상대도 되지 않는 끔찍한 i-pin과 휴대폰 인증. 암호화/복호화 라이브러리가 바이너리로 되어있어서 php에서 일말의 호출도 없이 그냥 문자열이 변환된다. 오오 신기해 오오. 대체 어떻게 하는건지 모르겠다. 어떻게하는거죠... 알면 python으로 변환해서 썼을텐데. 생각하기도 싫고 알수도 없어서 그냥 cli로 하기로...



우선 처리 과정을 순서대로 써보자.


1. 실명인증 메일이 왔습니다. 증

 라이브러리는 php / asp / jsp / .net 밖에 지원을 안한다고 하네요. 이런 코딩 후진국. 왜 안 python요! 이러니까 내가 맨날 사람들이 물어보면 그냥 php나 jsp로 짜라고 하잖아. 이런 문제 생길까봐 아오. 

 어쨌든 그래서 저의 오랜 친구 php와 함께 하기로 했어요. php_cli만큼 만만한게 없잖아요. (사실은 서버는 ubuntu라 asp, .net은 이미 아웃이고 jsp는 java 셋팅할 생각을 하니 뭔가 머리가 아파서 칼포기, 그래서 남은게 php)


2. 소스를 봤습니다.

 엣헴..이게 뭔소린가..

어쨌든 클라에서 무언가 값을 생성해줘서 서버에 던져주는데 내용은 뭣도 없는게 실행할때마다 encryption 된 내용물이 바뀌어서 너무 신기. 근데 이걸 자체 생성하고 막 그러길래. echo 찍어서 php_cli 로 받아오는 처리를 함. 그리고 그거랑 똑같은 form 은 django template에 걍 넣어서 쏨. 아 잘가네여


3. 결과를 받고 싶다

 오랜만에 보는 csrf 문제.. 그냥 가벼운 마음으로 csrf_exempt를 하기로 하고 패스.

 그리고 그냥 결과를 아무 생각없이 받았더니 노란 django 에러 화면이 딱. 워메 이건 안됭...


 그래서 결과 받기 소스를 보니 이것도 복호화를 해줘야 하는 것. 


 $_POST 로 암호화 안되서 받아올 수 있는건 그냥 받아와서 view딴에서 처리, 암호화 된 데이터는 또 결과 띄워주는 샘플 소스를 뜯어서 내맘대로 변형 ^^7


 그런데 보다보니 session으로 validation check를 하는데.. 

http://stackoverflow.com/questions/4500240/php-cli-session-warnings

http://stackoverflow.com/questions/5117816/php-session-recreate-cli


위의 두 개의 문서를 참고하면 도움이 될 듯하다. 내가 어떻게 했는지는 비밀--; 부끄러워서 못말하겠다.


어쨌든 그 예외처리를 하니.. 어맛.. 이건 python에서나 보던거잖아? 

\xc0\xe5\xc5\xc2\xbf\xb5 (... 내 이름임 --; )


자 그럼 이걸 어떻게할까여. 저는 프론트엔드랑 친하지 않아서 이걸 어떻게 해야할지 모르겠어여 예전에 군대에서 할 때의 온갖 기억을 동원해서 decoding을 시도.


여기서 왜 디코딩을 하냐고 묻는 사람이 있을 수 있는데, 난 그냥 이거 json으로 넘겨줄라고 한거임. 별 악의 없음..--; 

그런데 이게 안됨. iconv도 안되고, urldecode도 안됨. 예전 우리 와우 길드 주제가를  들으면서 멘붕을 했음. (옛날 우리 와우 길드 주제가: http://www.youtube.com/watch?v=8QZo5Ji43u8 )아 진짜 난 어쩌라고... 란 생각을 하면서 했음.


그러면서 구글에 열심히 검색을 하다 깨달음. 난 맨날 검색어를 영어로 치기 때문에 한국어 인코딩 문제 따위를 찾을 수 없었던 것이었다! 인도새끼들은 이런거 안하나? 쪽바리들은? 으아! (이걸 깨닫는데 30분 걸림--;;) 어쨌든 그래서 네이버에 열심히 검색. 알 수 없는 자바스크립트 유니코드 변환기만 한가득. 거기다 넣어봄. 안되잖아? 으아.


어쨌든 이런저런 과정을 거쳐서 생각하다가 rawurleoncde 함수가 생각남. 


$name = rawurlencode(iconv("CP949","UTF-8",$name));


그래서 이런 더러운 과정을 거쳐서 한글로 변환해줌. 왜 대체 php에서 걍 unicode를 인식을 못하는걸까 고민했는데, 아마 암호화해서 넘겨줘서 인자로 받은거에 대해 decoding을 거치지 않고 들어와서 그런듯 함.


그래서 잘 쑤셔넣었더니..


%EC%9E%A5%ED%83%9C%EC%98%81


이런 좋은 값이 나옴 ^^7 행복하당.


오늘 이거 하느라 KG모빌리언스에서 받은 문자만 30개가 넘는다. 이새끼들은 왜 자꾸 번호를 바꾸는거야 지우기 힘들게 -_- 




Posted by TY
,

여태까지 세팅한 서버가 2-30대 되는거같은데 맨날 세팅할 때마다 인터넷 찾아보기도 귀찮고 물어보는 사람도 많아서 귀찮아서 걍 정리해서 올림


이건 대학 과제도 아니고 주는 것도 없으므로 음슴체..-_-


1. 생성

귀찮으니까 네이버 블로그에 과제 땜에 썼던 걸로 대체

http://torisdream.blog.me/20165825658


2. apache설치

sudo apt-get install apache2


2-1. apache2 utf-8로 세팅 [할 이유가 전혀 없지만]

 cd /etc/apache2/conf.d/

 cat charset


내용을 보고 다른 문자열로 세팅되어 있을 경우 주석 지우고 바꿔줌. 아닐 경우 걍 생략


2-2. apache2 port설정

cd /etc/apache2/

cat ports.conf


내용을 보고 Listen과 VirtualHost쪽에 포트 확인인

보통 80일거임


SSL포트는 443이 기본


2-3. 홈폴더 설정

cd /etc/apache2/sites-availables/

vi default


DocumentRoot 이 홈 디렉토리임

권한 문제가 있기 때문에 sudo로 수정해 줄 것


기본은 /var/www로 되있을거임


3. php 설치

sudo apt-get install php5


3-1. php 잘 되었나? 테스트


cd /var/www/

* index.html 이 거슬린다면 지운다


sudo vi index.php

<?php

phpinfo();

?>


뭔가 보라딩딩한거 나오면 잘 깔린거


3-2. php-mysql 깔기 (목적 mysqli를 쓰고 싶다)

sudo apt-get install php5-mysql

sudo /etc/init.d/apache2 restart


아까 보라딩딩한거에서 새로고침해서서 mysqli 검색해서 나오면 잘 깔린거


3-3. mcrypt 깔기기

sudo apt-get install php5-mcrypt

sudo /etc/init.d/apache2 restart


다시 보라딩딩한거 새로 고침해서 mcrypt 검색해서 나오면 잘 깔린거


4. mysql 설치

sudo apt-get install mysql-server mysql-client


보라딩딩한 화면에서 패스워드를 입력하려고 한다

꼴리는대로 칠 것


4-1. 잘되었나? 확인해보자

mysql -u root -p 

접속 잘됨?


exit로 빠져나오셈

친절하게 Bye도 나옴

가끔 이걸 바꾸고 싶다는 생각이 들 때가 있지만 영 귀찮아서 알아보지도 않음


4-2. 유니코드 세팅(한글이 되게 하자)


cd /etc/mysql

ls -l | grep my.cnf


없냐? 그럴리 없다능..

일단 기존거 백업부터 해놓자

sudo cp my.cnf my.cnf.old


여기부터는 조금 복잡함

mysql restart했는데 뻑나면 my.cnf.old로 복구시키고 다시 수정하고 이러길 바람 이거 뻑나면 오도가도못함 디비 접속도 못하고 서버도 안올라감. 그래서 백업하라고 하는 거임


근데 한두번 해봤으면 뻑나기도 힘듬


http://oddly.tistory.com/60


여기 2부터 따라할 것. 링크 누르기 귀찬흐면 아래꺼 볼 것

[mysql] 이런 대분류가 있는데 그 아래 추가하란거임


[mysqld]

character-set-server=utf8

collation-server=utf8_general_ci


init_connect=SET collation_connection=utf8_general_ci

init_connect=SET NAMES utf8

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8


대충 이런거임


나는 별 지장 없어서 안하고 innodb폴더를 통째로 떠서 관심없는데 dump뜨는걸로 증분백업하는 사람들은

[mysqldump]에도 default-character-set을 지정해줘야함



다 했으면 mysql 껐다켜보기

mysql stop/waiting

start: Job failed to start


이렇게 뜨면 망한거임


대체 왜망했죠 


라고 하면 가끔 물어보는 사람들이 있는데

제발 복사 붙여넣기 해라 지네가 따라쳐서 오타내놓고 안된다고 난리치고 그러지좀 말고  한글자라도 틀리면 서버 안올라간다


어쨌든 저거 나오게 할라고 고의적으로 오타 한 번 내봄 ㅎㅎ;


5. svn 자동 업데이트 파일


벌써부터 느껴지는 왜 svn을 쓰냐는 geek님들의 눈총이 느껴지는데

저는 bitbucket과 github를 애용한다구여

그냥 사정상 svn을 쓸 일이 다 있는거임

왜냐면 난 힘없는 개발자니까....


난 CUI별로 안좋아해서 GUI tool 꼭 써야겠는데, osx라서 곤란함.


나도 돈내고 cornerstone사서 쓰는거 싫음

나도 무상 github client나 sourcetree같은거 쓰고 싶은데


뭐 세상이 제맘대로 되나여 ㅎㅎ


5-1. svn client 설치

sudo apt-get install subversion


http://www.brightlemon.com/blog/checkout-svn-php


요거 보고 참고해서 만드세여


페북이나 네톤으로 요청하면 제꺼드림 ㅎㅎ



Posted by TY
,

php에서 getimagesize함수를 이용할 경우 이미지에 대한 정보를 얻어올 수 있다.

http://php.net/manual/en/function.getimagesize.php


하지만 reference에 영어로 써있다. (사실 읽기도 귀찮음)


간단한 설명을 붙이자면


$info = getimagesize($filepath)

와 같은 방식으로 이루어져있다. 


$filepath에 이미지의 경로를 주고, $info에서 이미지에 대한 정보를 얻어온다.


Array ( [0] => 1280 [1] => 800 [2] => 3 [3] => width="1280" height="800" [bits] => 8 [mime] => image/png )



이런 식으로 얻어오게 되는데 설명은 다음과 같다.


0: width

1: hieght

2: ?

3: width와 height의 크기를 문자열로(아마 img 태그에 그냥 박으라고 주는 것 같다)

bits: 비트 수 

mime: mime type(아마 이미지 종류를 판별하기 위해 필요한 듯 하다)


2번은 모르겠는데


Index 2 is one of the IMAGETYPE_XXX constants indicating the type of the image.


라고 써있다. 그냥 무시하기로 결심했다.

Posted by TY
,