MEAN stack 의미?

간단하게 위 그림처럼 4가지 Mongo DB, Express, Angular.js, Node.js 오픈소스로 구성 된 개발 환경으로 생각하시면 됩니다.
Mongo DB: database
Express : back-end framework
Angular.js: front-end framework
Node.js: back-end runtime environment

각 항목이 어떤 역할을 하는지는 각각 설치방법과 함께 설명을 하겠습니다.

공식 홈페이지 (영문) 주소:

MEAN stack 각 홈페이지

MEAN stack 을 설치하기 위한 필요 툴 홈페이지 -> 자세한 설명은 아래에...

MEAN stack을 AWS EC2 환경의 리눅스 (Ubuntu) 와 Mac의 OS X 에 설치하는 과정을 진행하면서 정리해 보았습니다.


Node.js - 리눅스에 설치하는 방법

Node.js 에 대해서 다시 간단히 설명 드리면 

기존에 프론트앤드에서 사용하던 JavsScript 기술로 서버단 기술을 제어할 수있게 만든 것이라고 할 수 있다.

웹 개발은 Front-end 와 Back-end로 나뉜다. 간단히 말하면 프론트앤드는 웹페이지 쪽의 사용자가 볼 수 있는 부분이고, 백앤드는 서버쪽을 차지하고 있다. 원래 JavaScript는 프론트앤드에서 사용이 주로 됐지만, 2009년 Node.js라는 framework의 등장으로 자바스크립트로 서버단 기술까지 제어할 수 있게 되었다. Node.js(노드js) 는 JavaScript 엔진 V8 위에서 동작하는 이벤트 처리 I/O framework이다. 서버 환경을 포함한 프론트앤드 백앤드 모두를 JavaScript라는 같은 언어로 관리할 수 있게 되었다. 기존의 Front-end 개발자들도 다른 언어를 배울 필요 없이 쉽게 서버단 처리를 할 수 있게 만들어줬다.


우선 예전에 Node.js의 설명과 윈도우 기반에서 설치한 포스팅을 아래와 같이 한 적이 있는데 참고하셔도 됩니다.


AWS에 설치를 하기 위해서는 AWS에 리눅스 인스턴스를 설치 하는 방법 포스팅을 참고 하세요.


준비가 됐다면 그럼 리눅스에 설치를 해보자

참고한 링크 -> https://github.com/creationix/nvm#install-script


1. SSH를 통해서 리눅스 인스턴스에 연결한다.

2. Node version manager(NVM)을 아래와 같은 명령어도 설치한다

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash

3. nvm을 활성화 시킨다

. ~/.nvm/nvm.sh

4. 설치 가능한 nodejs 버전을 확인한다.

nvm ls-remote

4. nvm으로 특정 버전의 node.js를 설치한다. 버전 지정이 없으면 최신 버전

nvm install node


다양한 방법으로 node.js 를 설치 가능하지만 위에서는 nvm을 이용해서 설치 했다.

이유는 버전 관리하기 편하고 등등의 여러가지 장점이 있는 것 같은데 향후에 찾아서 적어보려고 한다.

뭐 일단 가장 괜찮다고 하는 방법으로 설치하였다.


NVM (Node version manager) 명령어 모음

nvm ls-remote

->설치 가능한 버전을 확인 


nvm install 1.1.1

-> 예를 들어서 1.1.1 버전을 설치하는 것


nvm install node

-> 버전 지정이 없으면 그냥 최신의 버전을 설치 한다.


nvm alias default 7.5.0

-> 터미널 시작시 사용할 버전을 설정


nvm uninstall x.x.x

->특정 버전을 삭제할 수 있다.


nvm use a.a.a

-> 특정 버전을 사용할 수 있다. 


기존에 설치된 버전에 문제가 있거나 버전 변경을 하기 위해서는 다른 버전을 설치하고 기존 버전을 삭제 해야 하는데 새로 설치된 버전을 사용하고 사용중이 아닌 기존 버전을 삭제할 수 있다.


1.1.1 버전 사용 중인데 3.3.3 버전으로 바꾸기 위해서는

nvm install 3.3.3

nvm use 3.3.3

nvm uninstall 1.1.1

하면 되는 식이다...


추가적으로 명령어를 더 알게되면 추가할 예정...


Node.js - Mac에 설치하는 방법 (Install on OS X)

위 포스팅처럼 AWS에서 구동되고 있는 우분투 리눅스에 Mean stack을 설정 하였는데, 가지고 있는 피씨는 맥북이라서 어떻게 환경을 구성 할지 고민을 하였다. ( Mean stack 에 대한 설명은 위 포스팅을 참고 하시면 됩니다.)


1. VirtualBox 가 윈도우 설치 때문에 깔려 있는데, 이것을 이용해서 우분투를 설치해서 똑같은 환경을 구성 할 것인가..

2. Mac에 필요한 파일을 다운로드 받아서 설치할 것인가...


일단 2번으로 진행 하기로 하였다. 이유는 찾아서 공부하는 과정에 두 가지 다 경험을 해보고 싶었고, 맥에 우분투를 설치하려면 아무래도 용량도 더 들기 때문이었다.


자 그럼 시작해 봅니다.


1. 아래 경로에서 필요한 파일을 다운 받고 ( node-v6.9.5.pkg ) 실행합니다.

-> https://nodejs.org/en/download/

그러면 /usr/local/bin 경로에 node & npm가 설치 됩니다.

/usr/local/bin/node

/usr/local/bin/npm


2. 설치가 잘 됐는지 Mac의 터미널을 열어서 버전을 확인해 봅니다.

Jasons-MacBook:~ Jason$ node -v

v6.9.5

Jasons-MacBook:~ Jason$ npm -v

3.10.10


하지만 맥도 우분투와 같은 방법으로 nvm을 통해서 설치하는 것을 추천한다.
nvm을 설치 후 환경 변수에 잡아 주면 다음에 터미널을 열었을 때, 실행이 가능하다

<nvm을 OS X의 환경 변수에 설정하는 법>

1. 홈 디렉토리에서 ls -a 을 하면 숨김 파일까지 보여지고,
2. vi .bash_profile 후 아래와 같이 입력 후 :wq 저장

export NVM_DIR="$HOME/.nvm"

[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" #This loads nvm

3. 터미널을 다시 열거나 source .bash_profile 입력 하면 적용 된다.


Express 설치방법

우선, Express 는 Node.js 를 위한 환경 설정을 담당하는 Web application framework 정도라고 생각하면 된다.

설치 방법은 그냥 express 를 설치할 수도 있고, 

vs

Express generator 를 설치할 수도 있다. generator 는 어플리케이션을 만드는데 필요한 JavaScript files, Jade templates, sub-directories 등을 포함하고 있다.


mongoDB - 리눅스에 설치하는 방법

아래 링크를 참고 하였음 ( 우분투의 APT(advanced packaging tool) 를 사용 하는 방법 )

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/



1. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

2. echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

3. sudo apt-get update

4. sudo apt-get install -y mongodb-org

5. sudo service mongod start

6. sservice mongod status


mongoDB - Mac에 설치하는 방법 (Install on OS X)

아래 링크에 가면  Homebrew라는 OX X 용 패키지 관리자 툴이 있는데, 이걸 설치한 후, 그것을 이용해서 mongoDB 를 설치하려고 한다. 사실 다른 패키지들 node등도 brew 를 통해서 설치할 수 있기도 하다.
http://brew.sh/
Homebrew를 Mac 에 설치 하는 방법은 아래 한 줄을 터미널에 입력하면 된다.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

일단 brew가 실행이 되면 다음과 같은 순서로 진행 한다.

아래 링크를 참고 하였음

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/


Jasons-MacBook:~ Jason$ brew list

Jasons-MacBook:~ Jason$ brew update

Already up-to-date.

Jasons-MacBook:~ Jason$ brew install mongodb

==> Installing dependencies for mongodb: openssl

==> Installing mongodb dependency: openssl

==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2k.sierra.bottl

######################################################################## 100.0%

..... 중략


설치 완료 후 brew list로 brew를 통해서 설치된 패키지 리스트를 보면 mongodb 와 dependency를 가진 openssl이 설치 된 것을 볼 수 있다.


Jasons-MacBook:~ Jason$ brew list

mongodb openssl



Bower를 이용해서 AngularJs 설치하는 방법

Bower (https://bower.io/) 는 웹개발을 위한 패키지 매니저. Jquery 같은 자바스크립트 라이브러리를 설치하게 도와줌

여기서는 앵귤러JS를 설치해보려고 한다.


Bower 설치방법

$ npm install -g bower


자 이제 AngularJs 를 설치해 보자


Angular.Js 설치방법


1. bower 를 이용해 angular 를 설치한다.

bower install angular

2. 설치된 Angular 를 확인 한다.

bower list

아래 터미널 결과를 참고하시면 됩니다.

ubuntu@ip-172-31-28-247:~$ npm install -g bower

/home/ubuntu/.nvm/versions/node/v6.9.5/bin/bower -> /home/ubuntu/.nvm/versions/node/v6.9.5/lib/node_modules/bower/bin/bower

/home/ubuntu/.nvm/versions/node/v6.9.5/lib

└── bower@1.8.0 


ubuntu@ip-172-31-28-247:~$ bower


Usage:


    bower <command> [<args>] [<options>]

Commands:


    cache                   Manage bower cache

    help                    Display help information about Bower

    home                    Opens a package homepage into your favorite browser

    info                    Info of a particular package

    init                    Interactively create a bower.json file

    install                 Install a package locally

    link                    Symlink a package folder

    list                    List local packages - and possible updates

    login                   Authenticate with GitHub and store credentials

    lookup                  Look up a single package URL by name

    prune                   Removes local extraneous packages

    register                Register a package

    search                  Search for packages by name

    update                  Update a local package

    uninstall               Remove a local package

    unregister              Remove a package from the registry

    version                 Bump a package version

Options:


    -f, --force             Makes various commands more forceful

    -j, --json              Output consumable JSON

    -l, --loglevel          What level of logs to report

    -o, --offline           Do not hit the network

    -q, --quiet             Only output important information

    -s, --silent            Do not output anything, besides errors

    -V, --verbose           Makes output more verbose

    --allow-root            Allows running commands as root

    -v, --version           Output Bower version

    --no-color              Disable colors

See 'bower help <command>' for more information on a specific command.

ubuntu@ip-172-31-28-247:~$ bower list

ubuntu /home/ubuntu

ubuntu@ip-172-31-28-247:~$ bower install angular

bower not-cached    https://github.com/angular/bower-angular.git#*

bower resolve       https://github.com/angular/bower-angular.git#*

bower download      https://github.com/angular/bower-angular/archive/v1.6.2.tar.gz

bower extract       angular#* archive.tar.gz

bower resolved      https://github.com/angular/bower-angular.git#1.6.2

bower install       angular#1.6.2


angular#1.6.2 bower_components/angular

ubuntu@ip-172-31-28-247:~$ bower list

bower check-new     Checking for new versions of the project dependencies...

ubuntu /home/ubuntu

└── angular#1.6.2 extraneous

ubuntu@ip-172-31-28-247:~$ 



이 글은 현재 수정 중입니다.

문의 사항이나 의견이 있으신 분은 알려주세요^^


Posted by do Jason


AWS란?

Amazon Web Services(AWS)는 우리가 흔히 알고 있는 아마존(Amazon) 에서 만들 클라우드 서비스 플랫폼이다. 기존에 다양한 회사나 개인이 물리적인 서버를 만들어서 그곳에서 서비스를 하던 것을 아마존이 각 지역별로 클라우드 서버를 만들어서 각 서비스를 제공하고 있다. 최근에는 많은 회사들이 기존 자체 서버 혹은 IDC에서 서버를 없애고 아마존의 AWS 나 마이크로소프트의 Azure로 옮겨 가는 추세이다. 


지금은 신규 가입자들에게 Amazon EC2 를 12개월 동안 무료로 사용할 수 있게 서비스 하는 중이다. Amazon Elastic Compute Cloud(EC2)는 개발자가 간단한 웹서비스 규모의 시스템을 운영할 수 있는 정도의 크기이고, 종량제 사용 방식을 사용하기 때문에 과금이 되지 않도록 주의해야 함. 리눅스 1개를 750시간 사용하는 것은 무료인데, 테스트 중에 인스턴스를 여러개 띄워서 사용하면... 과금이 된다. 24* 31일은 744시간 이니깐 1개만 띄우면 문제가 될 것은 없음.


AWS에서 Ubuntu(우분투) Linux 인스턴스 띄우기

다양한 방법이 있는데 아래 유튜브 내용을 참고 하였습니다.

한가지씩 천천히 따라하면 됩니다.



AWS 인스턴스에 연결하기

1. SSH 클라이언트를 연다. 윈도우면 PuTTY, Mac 이면 자체 터미널

2. 아까 우분투 인스턴트를 만들었을 때 만들 파일을 준비한다. Ubuntu.pem

3. 퍼미션에 문제가 있으면 chmod 400 Ubuntu.pem

4. 아래와 같이 연결

예) ssh -i "Ubuntu.pem" ubuntu@ec2-00-000-000-000.ap-southeast-2.compute.amazonaws.com

@ 뒤의 퍼블릭 DNS 는 AWS에서 EC2 인스턴스 생성 후 확인 할 수 있다.



Posted by do Jason

2016.08.18 16:52 개발

Grunt 설치 및 셋팅


Grunt는 무엇인가?

Grunt는 JavaScript를 위한 task 기반의 command line 빌드 툴이다. 예를 들어서 JavaScript 프로젝트를 진행할 때, 만약 주기적으로 해야할 일이 있다면, grunt를 설치 후 다양한 작업을 할 수 있다.


Grunt 설치

1. Node.js & npm설치 확인

기존에 Node.js가 설치 되어 있어야 함, npm을 통해서 설치해야 하기 때문에..

만약 설치가 안되어 있다면 아래 링크로 이동해서 설치

2016/08/18 - [개발] - Node.js 설치 및 셋팅, npm 이란?


2. CLI (command line interface) 인스톨

npm install -g grunt-cli 를 커맨드창에 입력

C:\Users\Jason>npm install -g grunt-cli

C:\Users\Jason\AppData\Roaming\npm\grunt -> C:\Users\Jason\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt

C:\Users\Jason\AppData\Roaming\npm

`-- grunt-cli@1.2.0

  +-- findup-sync@0.3.0

  | `-- glob@5.0.15

  |   +-- inflight@1.0.5

  |   | `-- wrappy@1.0.2

  |   +-- inherits@2.0.1

  |   +-- minimatch@3.0.3

  |   | `-- brace-expansion@1.1.6

  |   |   +-- balanced-match@0.4.2

  |   |   `-- concat-map@0.0.1

  |   +-- once@1.3.3

  |   `-- path-is-absolute@1.0.0

  +-- grunt-known-options@1.1.0

  +-- nopt@3.0.6

  | `-- abbrev@1.0.9

  `-- resolve@1.1.7

C:\Users\Jason>

참고로 cli는 향후 매번 grunt가 실행될 때, 로컬에 저장된 Grunt가 발견되면 CLI는 Grunt 의 라이브러리들과 Gruntfile로부터의 설정 정보를 가져와 요청한 task를 실행한다. (grunt-cli code )


3. Grunt 프로젝트 시작하기

3-1. package.json 생성


필요한 grunt와 grunt 플러그인들의 정보를 가지고 있는 파일

예제)

{

  "name": "reponsive-images",

  "version": "0.1.0",

  "repository": {

    "type": "git",

    "url": "https://github.com/udacity/responsive-images.git"

  },

  "devDependencies": {

    "grunt": "^0.4.5",

    "grunt-contrib-clean": "~0.6.0",

    "grunt-contrib-copy": "~0.8.0",

    "grunt-contrib-jshint": "~0.10.0",

    "grunt-contrib-nodeunit": "~0.4.1",

    "grunt-contrib-uglify": "~0.5.0",

    "grunt-mkdir": "~0.1.2"

  },

  "dependencies": {

    "grunt-responsive-images": "^0.1.6"

  }

}


3-2. Gruntfile.js or Gruntfile.coffee 파일 생성

이 파일은 task를 정의하거나 Grunt 플러그인들은 로드한다.
예제)
module.exports = function(grunt) {

  grunt.initConfig({
    responsive_images: {
      dev: {
        options: {
          engine: 'im',
          sizes: [{
            name: 'small',
            width: '30%',
            suffix: '_small',
            quality: 20
          },{
            name: 'large',
            width: '50%',
            suffix: '_large',
            quality: 40
          }]
        },

        /*
        You don't need to change this part if you don't change
        the directory structure.
        */
        files: [{
          expand: true,
          src: ['*.{gif,jpg,png}'],
          cwd: 'images_src/',
          dest: 'images/'
        }]
      }
    },

    /* Clear out the images directory if it exists */
    clean: {
      dev: {
        src: ['images'],
      },
    },

    /* Generate the images directory if it is missing */
    mkdir: {
      dev: {
        options: {
          create: ['images']
        },
      },
    },

    /* Copy the "fixed" images that don't go through processing into the images/directory */
    copy: {
      dev: {
        files: [{
          expand: true,
          src: 'images_src/fixed/*.{gif,jpg,png}',
          dest: 'images/'
        }]
      },
    },
  });

  grunt.loadNpmTasks('grunt-responsive-images');
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-contrib-copy');
  grunt.loadNpmTasks('grunt-mkdir');
  grunt.registerTask('default', ['clean', 'mkdir', 'copy', 'responsive_images']);

};


4. Grunt와 grunt 플러그인 설치

예제)

npm install grunt --save-dev <- grunt 의 최신버전을 설치

npm install grunt-responsive-images --save-dev  <- grunt-responsive-images grunt의 반응형 이미지 플러그인 설치


5. 커맨드창에 grunt를 입력하면 실행 됨


참고)

1. http://gruntjs.com/getting-started

2. Udacity Front-End Web Developer Nanodegree




Posted by do Jason

Node.Js는 무엇인가?

웹 개발은 Front-end 와 Back-end로 나뉜다. 간단히 말하면 프론트앤드는 웹페이지 쪽의 사용자가 볼 수 있는 부분이고, 백앤드는 서버쪽을 차지하고 있다. 원래 JavaScript는 프론트앤드에서 사용이 주로 됐지만, 2009년 Node.js라는 framework의 등장으로 자바스크립트로 서버단 기술까지 제어할 수 있게 되었다.

Node.js(노드js) 는 JavaScript 엔진 V8 위에서 동작하는 이벤트 처리 I/O framework이다. 서버 환경을 포함한 프론트앤드 백앤드 모두를 JavaScript라는 같은 언어로 관리할 수 있게 되었다. 기존의 Front-end 개발자들도 다른 언어를 배울 필요 없이 쉽게 서버단 처리를 할 수 있게 만들어줬다.


Node.js 설치 (윈도우 기반)

1. 다운로드 사이트 방문

https://nodejs.org/ko/ 


2. 최신 버전(node-v6.4.0-x64.msi) 다운받아서 실행


-끝- 설치는 간단합니다!ㅎㅎ


NPM 이란?

Node Package Modules의 약자다. 즉, Node.js에서 사용가능한 모듈들을 패키지화시켜 모아놓은 것이다.

예를 들어서 Grunt 라는 툴을 설치하기 위해서는 npm을 통해서 설치하고 관리 할 수 있다.

이 경우 위에 언급한 것처럼 Node.js 를 설치후 Command 창에 npm을 입력해보면 npm 명령어의 문법을 알려준다.

아래와 같이 보여지면 사용 가능한 것으로 보면 된다.


C:\Users\Jason>npm


Usage: npm <command>


where <command> is one of:

    access, adduser, bin, bugs, c, cache, completion, config,

    ddp, dedupe, deprecate, dist-tag, docs, edit, explore, get,

    help, help-search, i, init, install, install-test, it, link,

    list, ln, logout, ls, outdated, owner, pack, ping, prefix,

    prune, publish, rb, rebuild, repo, restart, root, run,

    run-script, s, se, search, set, shrinkwrap, star, stars,

    start, stop, t, tag, team, test, tst, un, uninstall,

    unpublish, unstar, up, update, v, version, view, whoami


npm <cmd> -h     quick help on <cmd>

npm -l           display full usage info

npm help <term>  search for help on <term>

npm help npm     involved overview


Specify configs in the ini-formatted file:

    C:\Users\Jason\.npmrc

or on the command line via: npm <command> --key value

Config info can be viewed via: npm help config


npm@3.10.3 C:\Program Files\nodejs\node_modules\npm


C:\Users\Jason>


Posted by do Jason
 TAG Node.js, 개발


웹페이지 개발시 방법론 - Code, Test, Refine


1. Look for natural boxes

2. Look for repeated elements & semantic elements

3. Write your HTML

4. Apply your styles (from biggest to smallest)

5. Fix things

그리고 다시 3~5반복함, 원하는 웹페이지가 만들어질 때까지



반응형 디자인(Responsive design)

viewport 테그 - 웹페이지를 모바일 디바이스에 최석화 시켜줌

<meta name="viewport" content="width=device-width, initial-scale=1.0">

initial-scale=1의 의미는

device independent pixel과 CSS pixel의 비율이 1:1


모바일에서 사람이 touch 가능한 최소 크기는 40, 적어도 48px 정도는 설정 해줘야 함

nav a, button {

min-width:48px;

min-height:48px;

}



Posted by do Jason


Verifying tools

To verify HTML: http://validator.w3.org/#validate_by_input
To verify CSS: http://jigsaw.w3.org/css-validator/#validate_by_input


Placehold sites

http://placehold.it/

<img src="http://placehold.it/350x150">


https://placekitten.com/

<img src="http://placekitten.com/200/300">

or <img src="http://placekitten.com/g/200/300">



Fonts

https://fonts.google.com/



Editor

http://www.sublimetext.com/

Sublime Text > Preferences > Settings - User 에 아래입력 후 저장
 {
    "autocomplete": true,
    "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
    "draw_white_space": "all",
    "font_size": 15,
    "tab_size": 4,
    "translate_tabs_to_spaces": true,
    "trim_trailing_white_space_on_save": true
 }

https://atom.io/



Frameworks


jQuery

<script type="text/javascript" src="js/[JQuery file name]"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>

next



Posted by do Jason

2016.08.11 14:24 개발

CSS 문법 정리

display: inline block 차이점

1. display: inline

라인1
라인2시작삽입 라인2끝
라인3

2. display: block

라인1
라인2시작삽입 라인2끝
라인3

3. display: inline-block

라인1
라인2시작삽입 라인2끝
라인3



CSS Box Model

margin, border, padding, content 구성
1. Width에는 border, padding, content 만 포함된다




Icon font 사용


<link rel="stylesheet" href="http://weloveiconfonts.com/api/?family=zocial" />
<a href="_blank" class="zocial-twitter">Twitter</a>


Posted by do Jason
 TAG css, 개발, 개발자

2016.08.09 12:15 개발

CentOS 사용팁

VMware 설치 후 CentOS를 다운받아서 설치 이후에 CentOS에 필요한 팁을 정리 해 보려고 합니다.



한글 설정

CentOS 설치 후에 한영키를 누르면 당연히 반응하지 않습니다. 다음과 같은 방법으로 한글을 입력해 봅시다.
1. Applications - System Tools - Settings - Keyboard - Input Sources 에는 English(US) 만 default로 설치되어 있습니다.
2. + 버튼 클릭 후 Korean(Hangul)을 추가하고
3. 텍스트 입력 창에 윈도우키+스페이스(Space) 를 클릭하면 한영 전환이 됩니다.

CentOS에 Git 설치하기

다양한 방법이 있지만 Yum을 이용해서 설치해보겠습니다.
1. 터미널을 열고 sudo yum install git 을 입력합니다.
만약 dojasoncom(제 계정명) is not in the sudoers file. This incident will be reported. 라고 나오는 경우는
해당 사용자가 /etc/sudoers 에 등록이 안되어 있기 때문입니다. 아래와 같이 등록 해봅시다.
1. root로 사용자 전환
su -
2. write 퍼미션 추가
chmod u+w /etc/sudoers
3. 퍼미션 변경 확인 - w 권한이 부여되었는지 확인
ls -al /etc/sudoers
4. vi /etc/sudoers 변경 후 가장 하단에 아래 추가 후 저장
dojasoncom    ALL=(ALL)    ALL
5. 퍼미션 440으로 원복
chmod 440 /etc/sudoers
6. 퍼미션 원복 확인 - 440(-r--r-----) 으로 변경 되었는지 확인
ls -al /etc/sudoers

2. Git이 다운 후 설치되는 중간에 여부를 묻는데( Is this ok [y/d/N]: ), 여기서 y를  몇번 입력하면 설치가 완료된다. 

커널(Kernel) 삭제하기

제 경우는 커널 업그레이드를 하다가 해당 버전에 문제가 생겨서 이전 버전으로 부팅하고 업그레이드 중 문제가 생긴 커널을 삭제 하였습니다.

1. 설치된 목록 보기
rpm -q kernel
2. 현재 사용중인 커널 보기
uname -a
3 커널 삭제하기
yum erase <커널명>



Posted by do Jason

Apache MySql PHP 설치 따라하기

youtube에서 간단하게 설명하고 있으니, 영어 실력이 안되어도 공부할 겸 틀어놓고 아래 순서대로 따라하면 쉽게 설치할 수 있다.

몇 년 만에 설치해보는 건데, 동영상이 끝남과 동시에 내 설치도 끝이났었다..



Apache MySql PHP 윈도우 설치 따라하기

1. 아파치 다운받기

Download Apache: http://www.apachelounge.com/download/



2. PHP 다운받기

Download PHP: http://windows.php.net/download/



3. C:Apache24confhttpd.conf 에 추가

LoadModule php5_module “c:/php/php5apache2_4.dll”

AddHandler application/x-httpd=php .php

# configure the path to php.ini

PHPIniDir “C:/php”


4. C:Apache24confhttpd.conf 아래처럼 변경

<IfModule dir_module>

DirectoryIndex index.php

</IfModule>


5. 아파치 설치

C:Apache24bin/httpd -k install


6. 환경 변수 추가 – path

C:php

C:Apache24

C:Apache24bin


7.  C:phpphp.ini-development -> php.ini로 변경


8. MySql 설치

Download MySql: http://dev.mysql.com/downloads/mysql/


Posted by do Jason

1. 해쉬맵(hashmap)과 해쉬테이블(hashtable)의 차이

해쉬맵은 해쉬테이블과 기본적으로 동일하다.

하지만 아래 3가지 다른점이 있다.

1) 해쉬맵은 UNSYNCHRONIZE 하다 

  동기화 하기 위해서는 다음과 같이

  Map m = Collections.synchronizedMap(new HashMap(…));

2) 해쉬맵은 null을 permit 한다.

3) 해쉬테이블은 thread safe 한 객체이지만 해쉬맵은 아니다.

  multi-thread 환경에서는 해쉬맵은 문제가 생길 수 있고, 

  single-thread 환경에서는 해쉬테이블은 성능이 저하된다.


2. 해쉬맵의 구현

HashMap hashmap = new HashMap();

hashmap.put(“jakarta”, “project”);

hashmap.put(“apache”, “tomcat”);

Set set = hashmap.entrySet();

Iterator keys = set.iterator();

while (keys.hasNext()) {

   key = (String)keys.next();

   System.out.println(hashmap.get(key));

}

 

3. bucket 

해쉬맵에서 bucket 은 map 이 가지는 element 들을 적당히 분산시켜 놓은 것

bucket 이 많으면 한 bucket 에 들어가는 element 의 수가 적어져서 속도 향상

bucket 이 적으면 메모리 낭비가 적다

 


4. capacity 와 load factor 

capacity 는 bucket 의 수, element 의 수가 아님, 기본값은 16

laod factor 는 얼마나 hashmap이 찾는지를 비교해서 자동적으로 capacity 가 늘게 한다. 

기본값은 0.75 이고, 0.75 offers a good tradeoff between time and space costs

put method 가 실행될 때 용량의 75%가 넘어서게 되면, bucket 수를 2배로 늘리고, 모든 element 에 대해 다시 hashcode 를 호출하여 어느 bucket 으로 들어갈 것인지 계산을 한다.

이것을 rehashing 이라고 하고 부하가 크다.

load factor 를 높이면 메모리는 정략되지만 속도가 느려짐

load factor 를 낮추면 메모리는 낭비, 속도는 향상

 

http://en.wikipedia.org/wiki/Hash_table

Posted by do Jason
이전버튼 1 이전버튼

Yesterday211
Today34
Total151,845
Statistics Graph

최근에 받은 트랙백

글 보관함