앱)NoClassDefFoundError java.lang.ClassNotFoundException org.apache.http.protocol.HttpContext

Posted by HULIA(휴리아)
2017. 12. 28. 14:59 백엔드개발/자바스프링
위의 에러가 나면
라이브러리가 저장된 메이븐 저장소의 위치에 가서 org.apache의 디렉토리를 지우고 프로젝트의 메뉴에서 maven의 update prpject를 하고 실행해보면 해결된다

exports과 module.exports 차이 그리고 관계

Posted by HULIA(휴리아)
2017. 11. 5. 20:12 백엔드개발/NODEJS
exports
-여러번 사용될 수 있음
-사용자가 만든 속성과 메소드에 대해서 쓸수 있음


예시)
// cicle.js
var PI = Math.PI;
 
exports.area = function (r) {
    return PI * r * r;
};
 
exports.circumference = function (r) {
    return 2 * PI * r;
};


// foo.js
var circle = require('./circle.js');
console.log( 'The area of a circle of radius 4 is '
    + circle.area(4));



module.exports
-한번만 사용될 수 있음
-사용자가 만든 속성과 메소드에 대해서 쓸 수 있음



예시)
// square.js
module.exports = function(width) {
    return {
        area: function() {
            return width * width;
        }
    };
}



// bar.js
var square = require('./square.js');
var mySquare = square(2);
console.log('The area of my square is ' + mySquare.area());





그런데 결론적으로 차이가 없다고 합니다 
http://programmingsummaries.tistory.com/340



Npm이란과 명령어 정리

Posted by HULIA(휴리아)
2017. 11. 5. 12:55 백엔드개발/NODEJS
정의
NPM(nodejs package manager)


공식사이트
https://npmjs.org/


유명한 모듈명들
-lodash
-request
-async
-chalk
-express
-bluebird
-commander
-debug
-react

유명한 npm install 모듈
-browserify
-grunt-cli
-bower
-gulp
-grunt
-express
-cordova
-forever

알아둘 개념
-전역모드 VS 지역모드
전역모드 설치시 
/usr/local/lib/node_modules
c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules
에 모듈이 저장된다
****그래서 npm install 하기 전에 반드시 폴더를 만들어야 한다

모듈 설치
npm install 모듈명@모듈버젼
-g옵션 : 전역모드로 설치
--save옵션 : package.json에 모듈명 업데이트(추가개념)
ex)npm install -g express@1.5x

모듈 삭제
npm uninstall 모듈이름
-g옵션 : 전역모드로 삭제
ex)npm uninstall -g express

모듈 업데이트
npm update 모듈명
-g옵션 : 전역모드로 업데이트
ex)npm update -g express


package.json(여러가지 모듈 일괄 설치 설정 파일)으로 의존성관리
기본적으로 프로젝트 생성시에 포함되어있지만 수동으로 package.json을 파일을 만들려면 npm init 명령어를 통해서 만들수 있다

package.json의 구조
{
"name" : 해당 모듈의 이름을 정의한다.  (이름에 'node' 나 'js' 가 들어가면 안된다.) 
"version" : 해당 모듈의 버전을 정의한다.
"description" : 해당 모듈의 추가적인 설명을 정의한다.
"main" : node에서 해당 package.json 을 탐색할 때 기준이 되는 파일 이름을 정한다.  기본적으로 index 로 
           설정이 되며, 생략이 가능한 부분이지만 추후 프로젝트가 복잡해진다면 이 항목을 정의 할 필요가 있다. 
"scripts" : package.json 이 있는 폴더에서 추가로 실행 할 스크립트 명령어를 정의한다. 노드 명령이나 
             쉘 스크립트  를 적어주면 된다.  
             현재 기본적으로 test 가 정의 되어있는데 해당 package.json 이 있는 폴더에서 
             npm run test 를 실행하면 Error: no test specified 라는 콘솔 메시지가 나타날 것 이다. 
"author" : 해당 모듈의 제작자를 정의한다.
"liecnse" : 해당 모듈의 라이센스를 정의한다.
"dependencies" : 일반적으로 package.json 에 가장 많은 정보가 입력되는 곳 이며 여기서 모듈의 의존성을 
                       정의 한다. 현재 아까 설치한 express 가 지정 되어있고 해당 모듈이름과 버전을  키 : 값 의 
                       형식으로 정의 되어있다.  여기서 추가로 모듈을 설치하고자 한다면 패키지이름 : 값  의 
                       형식으로 적어주면 된다. 
"devDependencies" : 해당 모듈의 실행에 필요한 또는 개발에 필요한 모듈의 의존성을 입력하는 곳 이다. 
}

package.json를 이용하여 모듈설치
package.json파일이 있는 곳에서 npm install을 입력
node_modules라는 폴더에 모듈이 설치됨


설치된 모듈확인
지역:npm ls
전역:npm ls -g --depth=0



Restful API 서버를 만들기 위한 Nodejs 개발환경 Intellij 설정

Posted by HULIA(휴리아)
2017. 11. 5. 12:50 백엔드개발/NODEJS
1. nodejs 설치
https://nodejs.org/

2. nodejs 개발툴 설치
에디터 계열의 sublimetext, atom 이나
개발툴 계열의 webstorm, intellij 
중에 하나를 설치하도록 한다

2-1. node 모듈을 설치할 디렉토리 만들기(만들고 나서 npm init)
2-2. express 모듈 설치
npm install express
2-3. express  generator(express 프로젝트 기본구조 만들어 준다)
npm install express-generator
2-4. express 프로젝트명
2-5. npm install

일반적으로 개발툴을 이용하는 이유는 프로젝트 구성을 어느정도 해주기 때문이다
웹스톰과 인텔리j에서는 2-1과 2-2의 과정을 알아서 해준다
** 저는 인텔리J를 이용하였습니다(기본적으로 nodejs 플러그인이 설치되어 있으며 express 프로젝트 구조를 자동으로 만들어 줌)


3. 인텔리J에서 express프로젝트 최초 구동
bin/www.js에서 run을 실행시킴

3-1. node .\bin\www 또는 npm start


4. 웹페이지에서 페이지 확인
http://localhost:3000 웹페이지 확인


5. express 프로젝트 구조
express(프로젝트명)
-bin(웹서버관련)
-node_modules(설치된 모듈관련)
-public(images, javascript, sytlesheets가 존재하는 부분)
-routes(URL을 요청 받으면 실행되는 객체)
-views(URL요청이 결과물로 리턴되는 페이지의 구성하는 객체-템플릿 엔진관련 파일이 존재하는 곳)
-app.js(웹서버를 구동시킬 때 이용하는 파일-모듈을 로딩해주는 객체)
-package.json(의존성 모듈관리)




파이썬 개발 환경 설정

Posted by HULIA(휴리아)
2017. 11. 5. 08:28 백엔드개발/파이썬


1. 파이썬 설치
https://www.python.org/downloads/

2. PATH 설정

3. Virtualenv 모듈 서치
파이썬 설치하면 pip 모듈은 기본으로 내장되어 있다
추가적으로 필요한 모듈은
Vitualenv이다

Virtualenv는 프로젝트별로 모듈관리하기 위한 것이라고 생각하면 된다
각 프로젝트에 필요한 모듈을 설치할수 있도록 한다

참고로
Pycharm IDE를 쓰면 Virtualenv 환경을 쉽게 설정하고 쉽게 사용할 수 있다

4. 개발툴 설치
개인적으로 Pycharm을 선호하나
이클립스나 Visual studio code나 Atom을 사용해도 무방하다


앱)쿼리 튜닝 팁

Posted by HULIA(휴리아)
2017. 10. 17. 15:45 백엔드개발/데이터베이스
기본적으로 튜닝을 할때 index를 이용한다

index는 PK, index등이 대표적이며
index된 컬럼은 기본적으로 정렬된 데이터라고 보면 된다

그래서 제대로 된 index를 이용하기 위해서는 index를 잘 이용할 수 있어야 한다

기본적으로 index를 잘 사용했는지 안했는지 판단하는 방법을 실행계획(execution plan)을 해보면 된다
mysql에는 explain을 쓰면 나온다
여기에 type에 all이 나오면 full scan을 하는 것이다

index 사용규칙
1. where절
왼쪽 컬럼은 그대로 써야 한다
upper라던지 컬럼이름에 편집을 가하면 index가 제대로 이용되지 않는다

오른쪽 컬럼은 수정해도 된다
허나 like 검색을 할 경우 앞에 %를 쓰게 되면 index가 제대로 이용되지 않는다
뒤에 %는 유효하다

2. index를 여러컬럼을 걸수도 있는데 그때는 가장 왼쪽에 선언된 컬럼이 가장 유효하다
그리고 where절에 쓸때도 index가 걸려있는 순서대로 이용해야 한다

3. join을 하더라도 테이블 자체에 10% 내외로 데이터를 추출하지 못한다면 index가 의마가 없다 ex) del_fg 같은 경우등

4. index연산자
=, between and 를 이용해야 한다

5. where 절에 or사용시는
where절에 and는 조건의 인덱스를 사용할수 있지만 or는 인덱스를 이용할수 없다 유의 해야함

인덱스는 정렬개념
플랜은 통계개념이다
 

파이썬 패키지가 설치되지 않거나 SSL 관련 오류가 날때

Posted by HULIA(휴리아)
2017. 9. 15. 01:11 백엔드개발/파이썬

pip install --trusted-host pypi.python.org [설치하려고 하는 패키지이름]

 

이렇게 하면 설치가 잘된다

 

 

이클립스 Spring MVC Project가 보이지 않을때

Posted by HULIA(휴리아)
2017. 5. 20. 14:21 백엔드개발/자바스프링

이클립스 특정 버전 이상, STS가 설치된 상태에서

Spring Legacy Project를 누르면 Spring MVC Project가 없는 경우가 발생!


1. window-preferences-spring-template project에 들어간 후 spring-data-gemfire, spring-integration을 지운 후

 

2. Show self-hosted templates를 체크한 후 apply를 해주면 리스트가 다시 나온다!

 



출처: http://joy5454.tistory.com/12 [J(ava, sp, avascript, etc...)]

자주 사용하는 스프링 annotation

Posted by HULIA(휴리아)
2017. 1. 20. 22:58 백엔드개발/자바스프링

@autowired

 

 

@controller
@transactional
@requestmapping

 

@responsebody
@requestparam
@requestbody


@service

 

@repository
Dao sql 호출

 

@path
@post
@producemime

 

 

@component
@value

 

 

@xmlaccessortype
@xmltype
@xmlelement
@xmlrootelement

자바 유용 클래스

Posted by HULIA(휴리아)
2017. 1. 20. 22:56 백엔드개발/자바스프링

1. StringTokenizer

문자열을 파싱할때 유용할 클래스

 

 

 

 

2. Bigdecimal

소수점이하를 정확하게 나타낼 때 유용한 클래스

 

 

 

 

3. SimpleDateFormat

날짜를 원하는대로 출력할 때 유용한 클래스

 

 

 

4. Uri.builder

url을 구성할때 유용한 클래스

 

ex)http://api.example.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7

 

final String FORECAST_BASE_URL =
    "http://api.example.org/data/2.5/forecast/daily?";
final String QUERY_PARAM = "q";
final String FORMAT_PARAM = "mode";
final String UNITS_PARAM = "units";
final String DAYS_PARAM = "cnt";

 

Uri builtUri = Uri.parse(FORECAST_BASE_URL)
    .buildUpon()
    .appendQueryParameter(QUERY_PARAM, params[0])
    .appendQueryParameter(FORMAT_PARAM, "json")
    .appendQueryParameter(UNITS_PARAM, "metric")
    .appendQueryParameter(DAYS_PARAM, Integer.toString(7))
    .build();

 

 


 URL url = new URL(builtUri.toString());

 

 

 


private Uri buildURI(String url, Map<String, String> params) {

    // build url with parameters.
    Uri.Builder builder = Uri.parse(url).buildUpon();
    for (Map.Entry<String, String> entry : params.entrySet()) {
        builder.appendQueryParameter(entry.getKey(), entry.getValue());
    }

    return builder.build();
}