[Node.js] Ubuntu 서버에 Node.js 설치하기
설치 환경 Ubuntu 14.04 LTS
Root 권한이라고 가정 (아니면 앞에 sudo 를 붙여주면 됨)
패키지 툴을 이용하는 경우 아래의 명령어만 실행하면 바로 설치가 됩니다.
apt-get install node npm
위의 문장을 실행하면 build-essential, libssl-dev 등의 패키지가 같이 설치되므로 별도로 설치할 필요가 없음
다음으로 Node 를 시작하게 되면 항상 만나게 되는 기본 용어 중에 npm 과 nvm 에 대해서 알아보겠습니다.
npm |
node package manager |
node 프로그래밍시 사용하게 되는 패키지들을 추가할 때 사용하는 툴 |
nvm |
node version manager |
node를 원하는 버전으로 설치하여 관리하기 위해 사용하는 버전 관리자 |
Ubuntu 에서는 node 실행시 node 대신 nodejs 라는 명령어를 써야한다.
설치가 완료되면 nodejs -v 혹은 nodejs --version 명령어로 설치된 패키지의 버전을 확인할 수 있다.
Hibernate dao code generator 설정
개발 환경
JDK 1.8.x
MySQL
먼저 Eclipse 를 실행합니다.
참고로 저는 최신버전 LUNA를 사용중입니다.
Help -> Install New Software 선택
Find 에 hibernate 을 입력하여 검색
JBoss Tools 를 설치합니다.
그리고 eclipse에 hibernate을 사용할 프로젝트를 생성합니다. (여기서는 편의상 HibernateDB001 java 프로젝트)
MySQL DB와의 연결을 위해서 JDBC 드라이버를 build path 에 추가합니다.
MySQL JDBC 드라이버는 아래 링크에서 다운로드가 가능합니다.
http://dev.mysql.com/downloads/connector/j/
저는 프로젝트에 lib 폴더를 만들어서 jar 파일을 추가하고 build path에 추가하였습니다.
그리고 Hibernate prospect 에서 config 파일을 생성합니다.
위의 아이콘을 클릭하거나 오른쪽 클릭하여 config 파일을 생성합니다.
hibernate.cfg.xml 파일을 생성합니다.
DB설정에 맞게 필요한 정보를 입력하고 Finish 를 누릅니다.
최종 설정은 대략 다음과 같습니다.
위의 정보를 제대로 입력했다면 Database에 아래와 같이 DB 정보가 나오게 됩니다.
Eclipse 위쪽의 Hibernate Code Generation 아이콘을 눌러서 코드를 생성합니다.
필요한 옵션은 다음과 같습니다.
ps. 내용 추가합니다.
hibernate 코드를 생성하려고 할때, hibernate.cfg.xml 을 파싱할 수 없다는 에러가 나는 경우가 있습니다.
Configuration 부분에 classpath에 에러 표시가 나타나면서 파싱이 안되는 경우인데요,
(Could not parse configuration 등의 에러..)
이 경우 hibernate.cfg.xml 파일의 헤더부분에 나오는 http://hibernate.sourceforge.net 부분을 http://www.hibernate.org/dtd 로 변경하면 문제가 해결됩니다. 구글링 결과 네트워크 연결이 되지 않거나 해당 사이트에 접속이 되지 않는 경우 생기는 문제라고 하니, parsing 에러가 나타나는 경우 위와 같이 변경하면 해결이 되는 경우가 있으니 참고하세요.
마이크로소프트 서피스3 프로 사용기..
마이크로소프트에서 2014년에 출시한 서피스3 프로에 대해서 간단히 리뷰해 보겠습니다.
일단 미국에서 구매한 제품인데, Tigerdirect라고 하는 미국에서는 제법 큰 온라인 쇼핑몰에서 구매를 했습니다.
최근 트렌드 대로 업그레이드가 거의 불가능한 제품이다보니 초기 구매시에 스펙을 잘 정해야 하는데,
저는 스토리지 (하드) 크기 보다는 CPU와 메모리에 신경을 써서 i7, 8GB 메모리, 256GB SSD 모델로 주문을 하였습니다.
참고로 해당 모델이 가장 인기있는 모델이다보니 제품 재고가 있다 없다 해서 주문하기까지 생각보다 시간이 많이 걸렸습니다.
처음 받은 제품은 초기불량 제품 (DOA) 이었습니다. 온라인으로 기다리기 싫어서 마소에 연락해서 근처 마소 매장에서 교환할 수 있냐고 물었더니 자기네가 판게 아니라고 판매처에 문의하라고 하더군요.. 자기네가 생산해서 파는 제품을 자기네가 판게 아니라고 판매처에 문의하라는 상황이 무척 짜증났지만, 다시는 마소 제품 구매 안하는 걸로 마음먹고 Tigerdirect에 연락을 하였습니다. 마소가 애플에 점유율을 계속 내주는 이유를 알 것 같은 기분이었습니다. (뒤에 더 많은 제품의 단점이...)
판매처인 Tigerdirect 쪽은 무척 친절하게 대응해줘서 다른 제품으로 교환을 하였습니다. (재고가 없어서 시간은 조금 걸렸습니다.)
마소가 서피스 군을 판매하면서 액세서리로 파는 키보드 (거의 필수) 와 전용 독도 같이 구매하였는데, 두 제품에 대한 실망 리뷰도 뒤에 같이 게재하도록 하겠습니다.
제품의 외형은 심플합니다. 전용 독과 키보드를 연결한 상태로 찍은 사진입니다.
제품 뒷면 입니다. 충전단자와 마이크로 SD 카드를 꽂는 자리 입니다 마이크로 SD 카드를 꽂는 자리에는 아무런 표시가 없어서 처음에 마이크로 SD 카드 슬롯을 찾을 때 상당히 당황스럽습니다. 충전단자는 독과 연결하는 역할도 같이하고 있어서 단자의 길이가 긴 편입니다.
전용 독 뒷 모습입니다. 본체에는 USB 단자가 하나밖에 없지만 독에는 USB3.0 단자 3개 2.0 단자 2개가 있습니다. 다음 사진에 나온데로 옆에 3.0 단자가 하나 더 있습니다. 그리고 전원 어댑터 단자, 디스플레이 포트와 유선랜, 이어폰 단자가 위치해 있습니다. 여기서 매우 중요한 사실! 독에 있는 디스플레이 포트는 active 케이블을 사용해야지만 모니터에서 제대로 화면이 나오게 됩니다. 이것도 이해가 안되는 부분인데, 호환성을 완전히 무시해주는 마소의 센스가 다시 한번 번득이는 거 같습니다. 한마디로 요약하자면 독은 비추!
엔트리그 스타일러스 펜입니다. 전작에서 와콤 펜을 사용해서 전작에 비해 떨어진다는 이야기도 많지만 저는 그래픽 작업을 거의 하지 않기 때문에 펜의 감도 등에 대해서는 넘어가도록 하겠습니다. 다만 이 펜에 2가지 결정적인 단점이 있습니다. 한 가지는 AAAA 타입 배터리를 사용한다는 것이고 다른 한 가지는 펜을 수납할 공간이 없다는 것 입니다. AAAA 배터리는 범용으로 사용 되는 사이즈도 아니라서 온라인 주문으로 구해야 하고 가격도 비쌉니다. 또한 하나씩 팔지도 않는 것도 큰 단점입니다. 독을 구매하면 옆에 자석으로 붙여두면 되지만 전작 서피스2나 갤럭시 노트2 처럼 본체 안에 수납하는 방식이 아니다보니 안정감도 떨어지고 따로 가지고 다녀야 한다는 것은 큰 결점이라고 생각됩니다. (마소가 안되는 이유들이 참 많네요..)
아래는 제품에 사용되는 어댑터인데요, 본체용은 길쭉하게 전용 독 용은 동그랗게 생겼습니다. 그리고 저는 접지 않된 제품의 본체에 전류가 흐르는 것에 매우 민감하게 반응하는 데요, 당연히 접지가 안되어서 충전할 때만 꽂아 두게 되네요. 이 부분은 마소 뿐 아니라 많은 업체들이 개선해야할 부분이라고 생각합니다. 애플의 경우 기본적으로 접지 단자가 있어서 어댑터에서 접지가 가능한데, 마소나 뿐 아리나 많은 제품들이 접지의 중요성에는 관심을 갖지 않는 것 같아서 안타깝습니다. 어댑터의 크기나 디자인, 제작비용 등의 이유로 생략해 버리는 것 같은데, 이런 작은 차이가 명품과 3류 제품을 구분해 주는 차이점 중에 하나 라고 생각합니다.
별도로 구매한 서피스3 전용 키보드(위)와 마소에서 출시한 일체형 키보드(아래) 입니다. 최근 마소에서는 Fn 버튼을 오른쪽 하단으로 옮기는 무리수를 두고 있습니다. 키보드 배열은 익숙해 지면 된다고 이해해 줄수 있다고 치고, 같은 마소 제품 키보드인데 F9, F10 키의 기능에 일관성이 없는 것은 문제가 있는 것 같습니다. 마소 내에서 조차 일관성이 없다는 것은 회사의 방향성에 문제가 있다는 것으로 생각이 듭니다. 그리고 터치패드 부분인데, 애플의 트랙패드 이외에는 지금껏 만족스러운 제품이 단 하나도 없었습니다. 마소의 제품도 기대 이하여서 특별히 쓸 내용이 없네요..
마지막으로 배터리에 대해서 말씀드리자면, i7 제품이어서 그런건지 배터리 소모가 상당한 편입니다. 제품을 켜둔채로 어댑터를 꽂아두어도 충전이 매우 느리게 됩니다. 본체를 끄고 충전하면 충전속도가 훨씬 빠른 것으로 보아 전력 소모가 상당한 것 같습니다.
쓰다보니 마소 혹은 서피스3 프로의 단점만 나열한 것처럼 보이네요. 기대가 너무 커서 그러한 부분도 있었지만, 실제로 제품의 완성도가 많이 떨어지는 것도 한 몫 했던거 같습니다. 고객서비스나 전반적인 제품의 품질하락에도 불구하고 12인치 고해상도 태블릿 PC 라는 것만으로도 상당히 매력적인 제품이라는 생각이 듭니다.
솔직히 15년 전에는 마소가 윈도우 폰으로 스마트폰 시장을 장악할 것으로 생각했었습니다. M$라고 욕은 많이 먹어도 그 만큼 편리했었고 제품의 완성도가 높았었는데, 이제는 누구도 그렇게 생각하지 않고 있으며, 심지어 앞으로는 PC에서 조차 시장을 많이 잃어갈 것이라는 생각이 듭니다. 최근에 국내 노트북 제품을 살펴보면서 디자인은 상당히 많이 개선되었지만, 고객이 원하는 제품이 아닌 자신들의 독단으로 호환성을 무시하는 제품을 만드는 업체가 아직도 있는 것을 보고 많이 놀랐었는데, 그 업체가 장기적으로 시장에서 살아 남을 수 있을지 궁금해 집니다.
[Linux] Ubuntu PPTP VPN 설치
우분투 PPTP VPN 설치
1. pptpd 설치
$ sudo apt-get install pptpd |
2. PPTP VPN 에서 사용할 Private IP 대역 설정
$ vi /etc/pptpd.conf |
아래 내용을 추가
localip 10.0.10.1 remoteip 10.0.10.101-110 |
3. ms-dns 추가
$ vi /etc/ppp/pptpd-options |
아래의 DNS 이외에 현재 서버가 사용중인 DNS를 추가해도 무방
ms-dns 8.8.8.8 ms-dns 8.8.4.4 |
4. VPN으로 접속할 계정 추가
$ vi /etc/ppp/chap-secrets |
아래의 형식으로 [id], [password] 부분을 변경하여 추가
[id] pptpd [password] *
5. pptpd 리스타트
$ sudo service pptpd restart |
6. IP 포워딩 설정 활성화
$ vi /etc/sysctl.conf |
아래와 같이 설정 변경
net.ipv4.ip_forward=1 |
변경된 설정을 적용
$ sudo sysctl -p |
8. iptable 설정
$ sudo iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -o eth0 -j MASQUERADE |
9. 방화벽 설정
서버에 방화벽이 존재하는 경우 1723포트를 열어준다.
[Linux] mysql 데이터 경로 변경하기
mysql 데이터 저장 경로 변경하기
/data/mysql 로 변경한다고 가정
- mysql 설정 파일을 변경한다.
vi /etc/mysql/my.cfg
datadir 부분을 찾아셔 다음과 같이 변경한다.
datadir = /data/mysql
- Apparmor access 변경
설정 파일을 변경한 후에 mysql 서비스를 실행하는 경우 로그에 다음과 같은 에러가 나올 경우
/etc/apparmor.d/usr.sbin.mysql 파일을 편집하여 해당 datadir 경로의 권한 추가해 준다.
110727 12:48:32 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
110727 12:48:32 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
110727 12:48:32 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
/data/mysql/ r,
/data/mysql/** rwk,
- ldata 경로 변경
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
> mysql_install_db –-user=mysql –ldata=/data/mysql
[Linux] Ubuntu 14.4 server install
Install Ubuntu Server
Select a language
English - English
Select your location
United States
Configure the keyboard
No
Configure the keyboard
English (US)
Configure the keyboard
English (US)
Configure the network
[hostname]
Set up users and passwords
Full name for the new user:
[display name]
Set up users and passwords
Username for your account:
[account name]
Set up users and passwords
Choose a password for the new user:
****
Set up users and passwords
Re-enter password to verify:
****
Set up users and passwords
Encrypt your home directory?
No
Configure the clock
Yes
Partition disks
Partitioning method:
Guided - use entire disk and set up LVM
Partition disks
Select disk to partition:
[select partition]
Partition disks
Write the changes
Yes
Partition disks
Amount of volume group to use for guided partitioning:
max
Partition disks
Write the changes to disks
Yes
Configure the package manager
Continue
Configuring tasksel
No automatic updates
Software selection
Continue
Install the GRUB boot loader on a hard disk
Yes
Finish the installation
Continue
Android, iOS 통화 코드 가져오기
Android
Currency currency = Currency.getInstance(Locale.getDefault()); String currencyCode = currency.getCurrencyCode(); |
iOS
NSLocale *selectedLocale = [[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier]; NSString *currencyCode = [selectedLocale objectForKey:NSLocaleCurrencyCode]; |
[Linux] Ubuntu에서 php-oracle 작업 환경 셋업하기
1. install apache, mysql, php
sudo apt-get install tasksel
sudo tasksel install lamp-server
2. install oracle
apt-get install alien
alien -i oracle-xe-11.2.0-1.0.x86_64.rpm
3. edit TNS
vi /u01/app/oracle/product/11.2.0/xe/network/admin/tnsnames.ora
4. install php-pear
apt-get install php-pear php5-dev build-essential unzip libaio1
5. install oci
alien -i oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm
alien -i oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm
pecl install oci8
6. edit environment variable
echo ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe/ >> /etc/environment
7. edit php configuration
echo extension=oci8.so >> /etc/php5/apache2/php.ini
echo extension=oci8.so >> /etc/php5/cli/php.ini
8. edit apache2 envvars
vi /etc/apache2/envvars
# add this line
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
9. restart apache
sudo /etc/init.d/apache2 restart
or
sudo service apache2 restart
참고자료
https://help.ubuntu.com/community/ApacheMySQLPHP
https://help.ubuntu.com/community/PHPOracle
http://kogentadono.com/2011/11/02/installing-oci8-on-ubuntu/
[Linux] SWAP 메모리 추가하기
현재 사용중인 SWAP 메모리 확인
more /proc/swaps
SWAP 메모리로 사용할 파일 생성 (파일당 1GB)
cd /var/tmp
dd if=/dev/zero of=swapfile1 bs=1024 count=1048576
dd if=/dev/zero of=swapfile2 bs=1024 count=1048576
SWAP 영역으로 설정
/sbin/mkswap -c -v1 /var/tmp/swapfile1
/sbin/mkswap -c -v1 /var/tmp/swapfile2
SWAP 파일 사용시작
/sbin/swapon /var/tmp/swapfile1
/sbin/swapon /var/tmp/swapfile2
바뀐 SWAP 메모리 확인
more /proc/swaps
[PHP] fsockopen error - permission denied
CENTOS 6.4 / PHP 5.3.3
VBbulletin 사용 도중 서버 이전 후 메일이 발송되지 않는 문제가 발생해서 원인을 찾아보니,
로그에 아래와 같은 경고 메시지가 뜨면서 발송이 되지 않고 있었음.
Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.google.com (Permission denied) in /xxxx.php on line xx
원인
대부분의 경우 리눅스 보안설정 SELinux 에서 httpd 에서 네트워크 커넥션을 허용하지 않는 경우이다.
해결책
커맨드 프롬프트에서 다음과 같이 입력
setsebool httpd_can_network_connect=1
(혹시 setsebool이 path가 결려있지 않은 경우 /usr/sbin/setsebool 을 이용)