2017년 8월 21일 월요일

Maven이란?

Maven : 프로젝트 객체 모델(Project Object Model)이라는 개념을 바탕으로 프로젝트 의존성 관리, 라이브러리 관리, 프로젝트 생명 주기 관리 기능 등을 제공하는 프로젝트 관리 도구

플러그인을 기반으로 소스 코드로부터 배포 가능한 산출물을 만들어 내는 빌드 기능 뿐만 아니라 레포팅 및 documentation 작성 기능 등을 제공한다.

>>내가 사용할 라이브러리 뿐만아니라 해당 라이브러리가 작동하는데 필요한 라이브러리들도 자동으로 받아줌

장점
• 뛰어난 의존성 관리 
 - 의존성 자동 업데이트 
 - 저장소를 통한 라이브리 일괄 관리 
• 모든 프로젝트에 걸쳐 쉽게 적용 가능한 일관적인 사용법 
• 라이브러리 및 메타 데이터 저장을 위한 지속적으로 확장 되고 있는 저장소 
• 쉽게 작성 가능한 플러그 인을 통한 확장성 
• 동시에 다수의 프로젝트 핸들링 할 수 있는 쉬운 설정 기반의 메커니즘
• 간단한 설정을 통한 배포 관리 
• Java, C++ 등 다수의 프로그래밍 언어 지원
단점
• Repository 관리의 불편함 
 - Maven 프로젝트의 급속한 발전으로 central repository가 제공하는 라이브러리들이 빠르게 증가하고 있으나 아직 3rd 파티 라이브러 등 미제공 라이브러리들이 있음 
• pom.xml 파일 관리 
 - 메이븐 프로젝트 관리에 대한 모든 내용이 pom.xml 파일에 담기게 되믄로 길고 장황하게 될 수 있음 
• 프로젝트에 특화된 복잡한 빌드 기능 제약 
 - 메이븐 프로젝트 특성상 소프트웨어 빌드에 통용되는 라이프 사이클을 제공하고 있어 세부 항목 또는 특화된 빌드 환경에 대한 지원이 미약함



pom.xml(Project Object Model) 
프로젝트 정보, 빌드 설정, 빌드 환경 등 프로젝트 라이브러리의 의존관계 관리하는 프로젝트 정보 기술.

<scope> 
compile : 컴파일 할때 필요. 테스트 및 런타임에도 클래스 패스에 포함 된다. scorp 을 설정 하지 않는 경우 기본값이다.
runtime : 런타임에 필요. JDBC 드라이버 등이 예가 된다. 컴파일 시에는 필요하지 않지만, 실행 시에 필요한 경우.
provided : 컴파일 시에 필요하지만, 실제 런타임 때에는 컨테이너 같은 것에서 제공되는 모듈. servlet, jsp api 등이 이에 해당. 배포시 제외된다.
test : 테스트 코드를 컴파일 할때 필요. 테스트시 클래스 패스에 포함되며, 배포시 제외된다

2017년 8월 2일 수요일

jQuery- $(document).ready(function()

$(document).ready(function () {});
= jQuery(document).ready(function () {});
= $(function() {});
= window.onload = function() {});
위의 문장은 모두 같은 기능을 한다.
의미는 [웹 페이지를 모두 읽어 들이고, 준비가 된 후에 처리]이다.

위에서 상위 세 개의 문장은 jQuery, 맨 아래 문장은 고전 javascript 문장이다.
장단점을 보면 jQuery문장은 안에서 여러개의 함수를 실행할 수 있지만, javascript문은 그렇지 않다.

$(document).ready() VS $(window).load()
$(document).ready()
: DOM객체만 로드 되자마자 처리됨.
$(window).load()
: 해당 페이지의 모든 외부 리소스가 로드된 후에 처리됨.

처리 순서 : $(document).ready() > $(window).load()


Mybatis #, $ 차이

#(동적 PreparedStatement)
- 쿼리 실행 시 #{~~} 는 ? 으로 되어 PreparedStatement 객체에서 ? 에 들어갈 파라미터 값을 넣어주면서 사용이 된다.
- 변수를 바인드 처리하기 때문에 같은 쿼리로 인식하여 재사용 가능

ex)
1
2
3
4
5
6
7
8
작성된 것
select * from member where username = #{name}
DB에서 받는 쿼리
select * from member where username = ?
실제 수행
select * from member where username = 'cot'
cs




$(정적 Statement)
- 쿼리가 수행될 때 column = 값 형태로 수행되기 때문에 ' ' 로 감싸줘야한다.
- PreparedStatement과 달리 같은 쿼리로 인식하지 않기 때문에 재사용이 불가능하다.
- 단순한 String으로 변환하기 때문에 SQLInjection 위험 있음
     (악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 코드인젝션 공격방법)
- $는 주로 테이블이나 컬럼명을 파라미터로 전달하고 싶을 때 사용하는듯 !


ex)
1
select * from member where username = '${name}';
cs

---------------------------------------------------------------------------------------
>>>>> 음 좀 더 찾아봐야할 것 같음. 각 장단점이 있는 것 같음. 관련 레퍼런스 찾아보기 


참조


2017년 7월 27일 목요일

토익 공부 LC 파트별 간단 정리

LC

PART1
현재 진행 주의
보기 중 아닌거 바로바로 삭제

PART2
문제나올 때 집중하여 무슨 의미인지 바로 파악

PART3,4
남는 시간 + 파트1,2 바로 풀고 남은시간에

지문듣기전 문제 대충 읽고 무슨 내용인지 흐름 파악



2017년 7월 11일 화요일

mvc model1 model2 정리

모델1

웹브라우저의 요청이 곧바로 JSP에 전달.
웹 브라우저의 요청을 받은 JSP는 자바빈이나 서비스 클래스를 사용해서 웹브라우저가 요청한 작업 처리하고 그 결과를 클라이언트에 출력.
이는 JSP페이지에 비즈니스 로직을 처리하기 위한 코드와 웹 브라우저에 결과를 보여줄 출력관련 코드가 섞인다는 것을 의미

장점: 쉽고, 개발 시간이 단축
단점: 개발시간이 오래걸리고, 개발자와 디자이너의 작업분리가 어려움 >>유지보수가 힘듬

모델2

웹브라우저의 요청을 하나의 서블릿이 받게 됨.
서블릿은 웹 브라우저의 요청을 알맞게 처리한 후 그결과를 보여줄 JSP페이지로 포워딩
포워딩을 통해 요청 흐름을 받은 JSP페이지는 결과 화면을 클라이언트에 전송 

장점: 컨트롤러와 뷰가 분리됬기 때문에 유지보수 용이,개발자와 디자이너 분업
단점: 구조 설계에 시간이 많이 소요됨, 어려움.

MVC 
모델2가 이 mvc패턴을 도입한 구조. 
model view controller로 나누어 작업 분담






















2017년 7월 6일 목요일

css 수정 후 적용이 안되는 문제

웹서버에서 캐시를 올려놓고 계속 쓰기때문에 수정해도 적용이 안되는 문제가 발생하는듯 하다.

 <link href="css/landing-page.css?ver=1" rel="stylesheet">
와 같이 버젼정보를 추가해서 보내면 수정한 css가 적용되는 것같다.

html 태그 간단 정리

nav  : 다른 페이지나 같은 페이지 안에 다른 부분으로 이어주는 네비게이션 링크로 구성된 섹션

div : 특별한 의미는 없으며, 문서의 영역을 지정하는데 사용

ul : 순서없는 목록

li : 목록(부모요소가 ol이면 순서가 있고, ul일 경우 순서가 없다.)

hr : 문단레벨에서 주제의 분리를 나타냄

i : 텍스트를 이텔릭체로 장식

span : 인라인 요소로 자체로의 의미는 없음

p : 문단을 나타냄