express는 node.js에서 가장 유명한 웹 프레임워크 모듈이다.


뭐 유명하다고 하니 사이트 접속       (한글로 번역한 사이트라고 함)

(사이트가 심플하면서 상당히 멋있음)

우측 상단에 github가 있는데 궁금하신분들은 들어가봐도 좋을 것 같음

(https://github.com/strongloop/express)



그렇다면 설치를 해보자.

npm을 이용해서 설치를 할건데 npm이 모르시다면

(http://kkn1220.tistory.com/45)참고


$npm install express        


express를 활용한 js만들기


파일이름: hello_express.js



$node hello_express.js


웹 페이지 확인




HTTP 요청 메소드 GET, POST, PUT, DELETE 등 간단하게 구현 가능




express에서 템플릿을 사용하면 기존 jsp 서버처럼 HTML을 동적으로 생성할 수 있다.


EJS(Embedded javascript)

- 자바스크립트로 동적인 웹페이지 생성을 도와준다.


Express JS 자동 생성 툴 활용

$sudo npm install -g express-generator        //전역 설치로 해야된다.

<테스트폴더>$express --ejs        //--ejs 옵션으로 뼈대 생성

<테스트폴더>$npm install          //package.js에 정의된 모듈 설치


설치된 화면의 모습이다.


$node /bin/www


웹페이지 접속(ip:3000)






$vi www 의 일부 모습



위의 페이지를 변경하고 싶으면

$vi /views/index.ejs


위의 페이지에서 원하는대로 수정하면 된다.

<% %> 태그 안에 자바스크립트 사용 가능

즉 <%= 변수 %> 사용 가능




위의 title의 경우 Express라는 말이 어디 나와있지??

$vi ../routes/index.js



res.render('index', {title: 'Express' }); 확인 가능










'프로그래밍 > Linux' 카테고리의 다른 글

Linux Personal repository 만들기  (0) 2015.10.22
vmware ubuntu disk 확장(sda1)  (7) 2015.10.22
npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08

npm(Node Packaged Modules)이란 node.js로 만들어진 모듈을 설치해주는 패키지 매니저이다.

이전강좌에서 node-<버전>-tar.gz를 설치하고 컴파일했다면 npm도 자동으로 설치된다.

(http://kkn1220.tistory.com/44)


$npm -h


위의 버전 1.2.21은 예전 사진으로 인해 지금 버전과 상이함


패키지 설치

npm command에는 apt-get install 과 같이 npm install 형식으로 설치할 수 있다.

<전역 설치> /usr/local/node-modules

$npm install -g <pkg>

<지역 설치>

$npm install <pkg>


패키지 삭제

$npm remove <pkg>

$npm uninstall <pkg> // 저역 설치 제거 시 -g


패키지 업데이트

$npm update <pkg>









'프로그래밍 > Linux' 카테고리의 다른 글

vmware ubuntu disk 확장(sda1)  (7) 2015.10.22
npm express, EJS 사용하기  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08
우분투 svn 설치  (0) 2015.09.03
위키백과에 따르면

Node.js는 확장성 있는 네트워크 어플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다.

Node.js는 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.

Node.js는 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

라고 소개하고 있다.



Node.js 설치


1.직접 설치 

$sudo apt-get update

$sudo apt-get upgrade

$sudo apt-get install build-essential libssl-dev

$wget http://nodejs.org/dist/v0.12.7/node-v0.12.7.tar.gz    (2015년 9월 9일 현재 최신 버전)

$tar -zxvf node-v0.12.7.tar.gz

$./configure

$make -j 3    //꽤 오래 걸리기 때문에 자신의 cpu코어 * 1.5 정도로 해주면 job을 공유하기 때문에 빠르다

$sudo make install


2. 배포판 설치(데비안 계열)

$wget http://node-arm.herojuapp.com/node_latest_armhf.deb

$sudo dpkg -i node_latest_armhf.deb


Hello world 테스트

아무곳에서 만들어도 상관없음

hello.js 파일 생성

$vi hello.js        //위키백과 소스코드

wq! 를 해서 저장을 한 후

$node hello.js


command화면에는

Server running at http://127.0.0.1:8000/        //라고 출력된다.


웹에서 위의 주소와 포트를 입력하면



코드 몇줄로 hello,world 를 띄우는 것을 확인할 수 있다.


node.js를 통해 서버를 구축 할 계획이다.



'프로그래밍 > Linux' 카테고리의 다른 글

npm express, EJS 사용하기  (0) 2015.09.09
npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08
우분투 svn 설치  (0) 2015.09.03
vmware take ownership 문제  (0) 2015.08.20

RabbitVCS 사용을 원할 시,

SVN 서버 설치시, 

http://kkn1220.tistory.com/39 참고


ubuntu-mate가 nautilus 환경에 그닥 적합하지 않아

다른 svn client 를 찾던 중 rapidsvn을 알게되었다.


$sudo apt-get install rapidsvn


설치하면

$rapidsvn

이나

x-window 환경에서는 programming에 rapidsvn을 확인할 수 있다.


초기 화면은 Bookmarks만 보인다.



마우스 우 클릭 후 checkout new working copy..버튼을 누른 후

SVN URL과 원하는 working 디렉토리를 넣어준다.



svn에 연결되어 디렉토리를 공유할 수 있다.


새로 working 디렉토리에 파일을 만들었다고 가정해보자.



그러면 위의 그림처럼 ? 아이콘과 unversioned가 출력된다.


해당 파일 마우스 우클릭 후 Add를 누른다.


아래의 화면처럼 added된 것을 확인할 수 있다.




다음으로 commit을 해야하는데 마우스 우 클릭 후 commit을 누른다.




commit할 때 로그메시지를 남길 수 있다.




commit을 할 때 user 아이디와 패스워드를 입력한다.




다음과 같이 commit 된 것을 확인할 수 있다.




개인적으로 상당히 사용하기 편리하다고 생각된다.

'프로그래밍 > Linux' 카테고리의 다른 글

npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
우분투 svn 설치  (0) 2015.09.03
vmware take ownership 문제  (0) 2015.08.20
우분투에서 geany tool 사용하기  (0) 2015.08.19

잘 되던 라즈베리파이에서 갑자기 sd카드가 안될 수가 있다.

포맷을 하려고해도 input output 에러가 나오고

리눅스의 fdisk, 윈도우의 diskpart를 해도 포맷이 절대로 안된다.


또한, sdformatter로 overwriting 포맷을 해도 오류가 나오고 ( Input/output error)

단순 erase로 했을 때에는 성공을 했을지도 몰라도 win32diskimager에서 이미지를 write할 때 에러가 나온다.


처음에는 sd카드가 망가졌다고 생각했으나 이것저것 테스트한 결과 카드리더기가 문제다....

라즈베리파이 start kit를 샀거나 싼 리더기(2,000)원 미만의 제품은 복구기능이나 보호기능이 전~~~~혀 없어서

망가지기 쉽다.


대체할 수 있는 방법으로는

1. 좋은 카드리더기 구매

2. adapter가 포함된 sd카드 구매(인터넷에서 sandisk type10 8GB 시 6,000원 정도 밖에 안함)


개인적으로 2번 추천


2번으로 한 결과 잘되고 망가졌다고 생각했던 sd카드 또한 포맷도 잘되고 이미지도 잘 구워진다.


같은 이슈가 있으신분들은

멀쩡한 sd카드를 버리지마시고 리더기나 어댑터를 사용하시기 바랍니다...



아침부터 라즈베리를 키는데 갑자기 에러가 출력되었다.


fsck: Warning... fsck.vfat for device /dev/mmcblk0p1 exited with signal6.

fsck died with exit satus 8

failed (code 8).

[FAIL] File system check failed. A log is being saved in /var/log/fsck/ckeckfs  ~~




에러 로그 확인




급한마음에 막 unmount하지 않고 sd카드리더기에서 빼고 그랬는데 문제가 생겼나보다..


해결방법

https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=53365 참고


sudo dosfsck -w -r -l -a -v -t /dev/mmcblk0p1

본인의 경우(sudo dosfsck -w -r -l -a -v -t /dev/sdb1)


결과값


dosfsck이란 (MAN 참고)

MS-DOS 파일 시스템을 체크하고 수리하기 위함

Synopsis

dosfsck [-aAflrtvVwy] [-d path -d ...] [-u path -u...] device

Options    



환경: 우분투 mate 14.04


1. 패키지설치

$sudo apt-get install subversion


2. 저장소 생성

$svnadmin create --fs-type fsfs /home/<id>/<저장소>


3. 저장소 설정

$vi /home/<id>/<저장소>/conf/svnserver.conf


anon-access

auth-access

password-db 주석 해제


*수정

svn: E200002: Error while parsing config file: /home/kkn/svn/conf/svnserve.conf:

svn: E200002: line 19: Option expected

-> 공백 허용 안함
-> 위의 공백 제거 해야함


4. 사용자 추가

$ vi /home/<id>/<저장소>/conf/passwd

<id> = <passwd> 설정


5. svn 시작

$ sudo svnserve -d -r /home/<id>/<저장소>

-> d옵션은 daemon, r 옵션은 repository 지정 


(자동 재시작)


이전버전에는 /etc/rc.local이 있었는데 이제는 rc0.d rc1.d 식으로 바뀌었다.

따라서 서버형식은 rc.3 x-window형식은 rc.5로 이동

$ cd /etc/rc5.d

$ sudo vi /etc/rc5.d/S99rc.local


svnserve -d -r <저장소path> 추가해주면 부팅 시 자동으로 재시작 된다.


6. apache 설치

$ sudo apt-get install apache2

$ sudo apt-get install libapache2-svn


7. svn 저장소 권한 수정

$ sudo chown -R www-data /home/<id>/<저장소>

$ sudo chmod -R g+w /home/<id>/<저장소>

$ sudo chown -R nobody.nogroup /home/<id>/<저장소>


8. apache와 svn 연동 환경설정 수정

$ sudo vi /etc/apache2/mods-enable/dav_svn.conf




<Location /svn> 주석 해제

<DAV svn> 주석 해제

SVNPath 부분 변경 필요



마지막 줄</Location> 주석 해제


<Location /svn>과 </Location>의 주석 해제를 하지 않으면 

DAV not allowed here 오류 출력됨


9. 아파치 재시작

$ sudo /etc/init.d/apache2 restart


10. 웹 접속

http://<ip>/svn        //svn 경로로 하면 안나옴



위의 화면이 나오면 서버는 돌아가는 것이다~


11. 우분투 svn gui client 다운(RabbitVCS 사용)


$sudo add-apt-repository ppa:rabbitvcs/ppa

$sudo apt-get update

$sudo apt-get install rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus3

$nautilus -q


12. reboot

$sudo shutdown -r now


13. 설치 확인

$nautilus

추가 된 것을 확인할 수 있다.


14. 기능 확인

- import: 처음 저장소에 소스 저장

- checkout: 소스받기

- update: 최근 내용으로 수정

- commit: checkout한 소스 수정 후 저장





commit 시

db/txn-current-lock:permission denied 문제

-> $sudo chmod -R go+w /<저장소>



'프로그래밍 > Linux' 카테고리의 다른 글

npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08
vmware take ownership 문제  (0) 2015.08.20
우분투에서 geany tool 사용하기  (0) 2015.08.19
루팅 하기 전 기종 및 버전 확인 필수
본 게시글은 shv-e210k 갤럭시s3 4.4.4 버전으로 진행

선행: 핸드폰을 usb에 연결시켜 통합드라이버 설치
 환경설정-더보기-디바이스정보-펌웨어버전(계속 클릭 하다보면 카운트 보임)-이전버튼 누르고 디바이스정보에 개발자 옵션 추가 된 거 확인-개발자옵션에서 usb디버깅 클릭 후 드라이버 설치(자동)
주의: 녹스 워런티 깨짐으로 삼성 AS 안될 수 있고, 루트 카운트 증가할 수 있음

1. CF-Auto-Root 다운로드 및 압축 해제 CF-Auto-Root-c1ktt-c1ktt-shve210k.zip (링크)
2. Odin 3.09 다운로드 및 압축 해제  Odin3_V3.09.Zip (링크)
3. 핸드폰을 종료한 후 볼륨 하 버튼 + 홈버튼 + 전원버튼을 눌러 다운로드 모드로 진입
4. 볼륨 상키를 누르고 계속 진행
5. 2에서 다운받은 odin.exe 파일을 관리자 권한으로 실행
6. 핸드폰을 USB 케이블로 연결
7. 오딘 화면에 보면 [COM 숫자] 추가 되며 Added 메시지 확인 가능(message box)
8. Auto Reboot, F.Reset Time 옵션 체크
9. AP 버튼 클릭 후 1에서 압축해제한 CF-Auto-Root-c1ktt-~~.md5 파일 선택

10.스타트 버튼 클릭
11. 설치가 완료되면 PASS 메시지 출력(초록 불빛으로 바뀜)
12. 자동적으로 reboot 됨
13. usb 해제
14. 끝


'프로그래밍 > Android' 카테고리의 다른 글

android multi-user mode  (0) 2015.08.31

android multi-user란?

- 하나의 단말에서 복수의 사용자 모드를 지원

- 안드로이드 4.2Jelly Bean에서 시작(태블릿에 제한)

- 안드로이드 5.0 Lollipop에서 휴대폰 지원 시작

제조사의 지원 여부에 따라 사용 제한

- 삼성의 경우 S6, S6 edge 단말에서 안드로이드 5.1 이상부터 적용 예정('15.6 ~ '15.7)

3가지 모드 지원

1. Guest mode

- 정보 및 데이터는 세션이 유지되는 동안 일시적으로 저장됨

- LG G플렉스, 및 G2, G3 모델의 4.x 버전에서 이미 Guest 모드 지원

(G4의 경우 통신사에 따라 지원 여부 달라짐)

2. Profile mode

- APP 과 Service 접근 제한 가능

- 아이들에게 핸드폰을 빌려줄 때 과금 위험 서비스나, 숨기고 싶은 app에 제한을 둠으로 보호 가능

3. User mode

- 모든 app과 서비스 제공

- 새로운 google id를 추가함으로 main user와 별개로 서비스 가능

(예를 들어 pc에 usb를 연결할 경우, 해당 로그인 된 정보만 출력 가능)


multi-user 특징

1. The Owner라 불리는 main user는 새로운 user를 만들고 수정하고, 지울 수 있다.


(create, edit, remove)

The Owner ------------->  user1, user2, user3


2. User를 생성할 때 unrestricted, restricted를 설정할 수 있다

(restricted user의 경우 허용된 app에만 접근 가능)

3. User들 간의 데이터는 분리되어 서로의 데이터를 보지 못한다.

4. OS의 setting은 분리 될 수 있고 공유 할 수도 있다.

5. 하나의 User만 화면에 활성화 할 수 있지만 3개의 다른 user까지 동시에 background로 프로세스 실행 가능

(예를 들어 email과 같은 경우 background로 계속 실행하게끔 할 수 있음)


생성 원리

- OS 레벨에서 다음과 같이 변경사항이 구현됨

- Sandboxing에 이용되는 appId와 사용자 id가 생성되는 데 이를 각각 appId, userId라고 부른다.

- userID

        • 00: Device Owner
        • -10000: null user
        • <nn>: secondary userID로 만약 main user 이외 User1이 생성된다면 userId는 10을 갖게 되고 User2는 11로 생성
        • User의 list는 /data/system/users/userlist.xml에 저장됨
- appId와 userId를 연결하여 sandbox를 허용할 수 있는 UnixUID를 얻을 수 있으며, 이를 통해 메모리, 프로세스, 저장공간을 분리할 수 있다.
예를 들어 Owner와 User1이 있다고 가정했을 때, 같은 앱을 실행한다고 가정한다. appID는 12345일 때 Owner process UID의 경우 0012345가 되고 User1의 경우 1012345를 갖게 된다. 그러므로 app은 독립적인 메모리와 process를 갖게 된다.

- 각각의 설치된 app의 정보는 /data/user/userID/packageName에 저장이 되지만 apk는 여전히 /data/app에 유지



보안 관점에서 봤을 때의 multi-user mode

1. Secondary user의 앱과 설정 우회 가능
- Owner는 새롭게 추가되는 User의 app접근이나 OS setting을 제한할 수 있지만 이것에 대한 추가적인 안정장치 없음
        • app의 경우 XML file에 app list를 추가함으로 app을 숨기는 데 수정할 경우 숨김 app을 볼 수 있음
        • 제한 설정 같은 경우 Setting app 자체적으로 메뉴항목을 숨김. 그러나 VPN setting이나 mobile data setting, backup 등의 setting 숨김을 우회하는 방법이 있음. 이를 막을 수 있는 통합 프레임워크 메커니즘이 없음
        • Wi-Fi의 문제가 있는데 User1이 악의적인 AP를 통해 모든 데이터를 가로챌 수 있도록 구성 가능
2. Background tasks 활용
- User1의 app을 background로 실행시켜놓고 Owner가 단말을 사용할 때 알아차리기 힘듦
악의적으로 User1이 background에서 악성 app을 실행시켰을 때 Owner 사용자는 위치 정보, key logging 등의 공격을 받을 수 있음
(휴대폰을 종료하기 전까지 프로세스는 계속 돌 수 있으며 immortal 악성 app 또한 가능함)

3. 공유된 app code 활용
- 위의 생성원리에서 app code는 공유된다고 하였는데 이를 통해 악의적 행동 가능
Owner의 설정에서 알 수 없는 출처의 앱 다운로드 금지를 하였더라도 User1에서는 기능 해제 후, 다운로드 했을 때 app code는 공유 됨 -> 기본적으로 android는 sandbox에 설치된 동일한 개발자에 대해 permission을 공유함


'프로그래밍 > Android' 카테고리의 다른 글

갤럭시 s3(shv-e210k) 4.4.4 루팅  (3) 2015.09.01

가끔씩 vmware를 정상적으로 종료하지 않았거나 문제가 있을 시 다음과 같은 문구를 볼 수 있다.


This virtual machine appears to be in use.

if this virtual machine is not in use, press the "Take Ownership" button ~~~~







뭐 사실 별거 없다.


Configuration file에 들어가서 .lck 확장자를 가진 파일을 지우면 된다. 즉 현재 vmware는 lock이 걸려있는 상태이기 때문에 이를 지워주면 정상적으로 실행이 되는 것을 확인할 수 있다.




'프로그래밍 > Linux' 카테고리의 다른 글

npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08
우분투 svn 설치  (0) 2015.09.03
우분투에서 geany tool 사용하기  (0) 2015.08.19

+ Recent posts