Do Not Think!!!

Posted
Filed under 01010101

RESTful API 구현

어떤 언어를 사용할까?

선택지는 Java+Spring, PHP+CodeIgniger, JavaScript+node.js
ruby, python 은 언어 경험이 없기 때문에 선택지에서 제외
가장 최근까지 PHP+CodeIgniter 로 Web + RESTful API 개발
PHP+CodeIgniter+MariaDB 로 Web 개발 결정
node.js 가 얼마나 좋은가? 라는 호기심에 JavaScript+node.js 선택

Express 와 restify 중에서 어떤 모듈을 이용할까?

웹사이트는 PHP+CodeIgniger 로 개발하기 때문에, 단지, API 기능만 개발하면 되는 상황.
restify 가 좀 더 목적에 맞는 모듈이라 생각되었기 때문에 restify 선택

MariaDB 이용

현재 사용중인 db 를 그대로 가져가야 함. 선택의 여지가 없음

MVC 구조

https://github.com/duddns/node-restify-mvc-mariasql

Posted
Filed under 01010101

php, gd 버전이 업데이트 되면서 JP_ThumbnailListViewTT 플러그인에서 jpg 이미지 썸네일을 만들지 못하는 문제 발생


원인

php gd_info 결과 데이터 형식 변경
5.3.0 JPG Support attribute renamed to JPEG Support.


해결

thumb_engine.php 파일 내용 중에서,
[CODE]$gd_info['JPG Support'][/CODE] 부분을
[CODE]$gd_info['JPEG Support'][/CODE] 로 변경

Posted
Filed under 01010101
[CODE]$ vi log-2014-04-23.log
$ tail !$[/CODE]
Posted
Filed under 01010101
http://dont.pe.kr/tt/450


개선된 코드

config.php 파일 수정
[CODE]$config['proxy_ips'] = $_SERVER["REMOTE_ADDR"];[/CODE]
Posted
Filed under 01010101
0. Prepare
MacPorts
http://www.macports.org/

Apple's Xcode Developer Tools
https://developer.apple.com/technologies/tools/

Apple's Command Line Developer Tools
https://developer.apple.com/downloads/


1. Install Apache2 & PHP
[CODE]$ sudo port install apache2
$ sudo port install php5
$ sudo port install php5-mysql
$ sudo port install php5-xdebug
$ sudo port install php5-openssl[/CODE]


2. Configure Apache2
[CODE]$ sudo vi /opt/local/apache2/conf/http.conf

LoadModule php5_module modules/libphp5.so
Include conf/extra/mod_php.conf[/CODE]


3. Install MySQL
[CODE]$ sudo port install mysql56-server [/CODE]


4. Configure MySQL
[CODE]$ sudo vi /opt/local/etc/mysql56/macports-default.cnf

#skip-networking[/CODE]


5. Configure XDebug
[CODE]$ sudo vi /opt/local/etc/php5/php.ini

; NOTE: This line adds the xdebug extension. The macports install will give you the path,
; or may even add this automatically. Be smart, look for a similar line in your config first.
; (Edit: 06/22/2012)
zend_extension="/opt/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"

; General config
;Dumps local variables on exception
xdebug.show_local_vars=On
;Dump server variables
xdebug.dump.SERVER=*
;Dump global variables
xdebug.dump_globals=On
xdebug.collect_params=4;

; Tracing
xdebug.auto_trace=On
xdebug.trace_output_dir=/opt/local/php_traces/
xdebug.show_mem_delta=On
xdebug.collect_return=On

; Profiler
xdebug.profiler_enable=1
xdebug.profiler_output_dir=/opt/local/php_traces

; Debugging. You might need to specify your host with some additional options
xdebug.remote_enable=1[/CODE]
Posted
Filed under 01010101

설치

GitLab는 설치 문서를 참고 따라하기만 하면 설치 할 수 있습니다.
GitLab Installation Document


삽질 내용1.

메모리 문제 때문에 설치를 포기했습니다.

GitLab을 설치하기 전에 꼭 읽어봐야 하는 문서가 하나 더 있는데, 바로 requirements 문서 입니다.
이 문서 중에서 Memory 부분을 간과했다가, GitLab이 동작하지 않는 문제 때문에 하루종일 삽질을 했습니다.

 

Memory

  • 512MB is too little memory, GitLab will be very slow and you will need 250MB of swap
  • 768MB is the minimal memory size and supports up to 100 users
  • 1GB is the recommended memory size and supports up to 1,000 users
  • 1.5GB supports up to 10,000 users

KT ucloud 중에 Free Pack 으로 제공되는 가상 머신이 있는데, 이 가상 머신의 스펙은
CPU 0.5vCore, Memory 512MB, Disk 20GB
입니다.

바로 메모리 512MB 부분에서 문제가 되어서,
GitLab 이 동작하지 않았는데, 다른 머신에 설치를 해보니 아무런 문제 없이 잘 동작합니다.



삽질 내용 2.

MySQL 대신 MariaDB 를 사용하는 경우,
GitLab 설치 과정에서 필요한 Ruby MySQL library 가 설치되지 않는 문제가 있었습니다.


결국 이 문제는 MariaDB 를 지우고, MySQL 을 재설치해서 해결했습니다.


Posted
Filed under 01010101

현재 상태

Travelog 이미지를 AWS S3에 저장
북미 지역에서는 매우 빠른 속도를 보임
아시아 지역에서는 매우 느린 속도
아시아 사용자가 늘어나는 추세

내부 테스트 진행

AWS CloudFront 적용
https://aws.amazon.com/cloudfront/
서버에서 이미지 주소를 바꾸지 않고, 앱 코드를 수정해서 내부 인원만 테스트 진행

테스트 결과

이미지 다운로드 속도만 빨라져도 앱의 성능이 눈에띄게 올라감

실 서비스에 CloudFront 적용

기존 S3 이미지 URL 을 CloudFront URL 로 교체 하는 코드 적용



AWS CloudFront 설정 방법

AWS Console 접속 -> CloudFront 선택

https://aws.amazon.com/cloudfront/

Create Distribution

Select delivery method

사용자 삽입 이미지

Create distribution Settings

사용자 삽입 이미지
Posted
Filed under 01010101

MariaDB

https://mariadb.org/en/
MariaDB is a drop-in replacement for MySQL.

저장소 추가

[CODE]$ sudo apt-get install python-software-properties
$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
$ sudo vi /etc/apt/sources.list.d/mariadb-stable-precise.list
# MariaDB 5.5 repository list - created 2013-02-15 02:13 UTC
# http://mariadb.org/mariadb/repositories/
deb http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/5.5/ubuntu precise main
deb-src http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/5.5/ubuntu precise main
[/CODE]

mariadb 설치

[CODE]$ sudo apt-get update
$ sudo apt-get install mariadb-server[/CODE]

mariadb 실행 & 테스트

[CODE]$ sudo /etc/init.d/mysql start
$ mysql -u root -p[/CODE]

소감

1. MySQL 바이너리가 제거되고 MariaDB 바이너리가 설치됨
2. mysql 관련된 명령어가 그대로 실행됨
3. php driver 도 그래도 사용됨
4. 데이터도 그대로 남아 있음
5. 쿼리문을 수정할 필요가 없음
6. 즉, 기존 MySQL 에서 MariaDB로 바이너리만 바꾸면 기타 변경작업 없이 바로 적용이 됨
7. 일단 개발 머신에서는 MySQL 대신 MariaDB 를 사용