본문 바로가기

전체 글

(79)
프록시, 게이트웨이에 관해 일반적으로 클라이언트와 서버가 HTTP통신을 할 때 요청과 응답을 주고 받는다. 클라이언트가 HTTP Request의 Header와 Body에 내용을 담아서 보내면, 서버는 그러한 Header와 Body에 담긴 내용을 해석해서 HTTP Response를 보내준다. 헌데 이 방식의 문제점은 보안에 취약하다는 문제가 존재한다. 클라이언트과 서버가 직접적으로 통신하는 것이기 때문에 서버의 위치가 노출되는 이슈가 있을 수 있으며, 주고 받는 데이터가 중복될 경우, 중복되는 통신을 서버와 하는 것이기 때문에 서버에 부담이 생길 가능성 역시 존재한다. 이러한 것을 해결하기 위해 클라이언트와 서버 사이에 중계자 역할을 하는 프로그램/서버를 넣기로 하였다. 그러한 것들이 바로 프록시, 게이트웨이이다. 1. 프록시 클라..
How to Git 수많은 깃 명령어들이 있는데, 사실 이 명령어들을 하나하나 기억하는 것보다, 이게 전체적인 것에 있어서 어디에 위치하는지를 이해하는게 더 쉽다. 헌데 그걸 다 정리해주는 사람들이 없어서 한번 정리해봤다.
XML와 Annotation, 왜 Annotation을 사용하는가 XML - 결합도를 낮추고 유지보수성을 높이기 위해 xml로 설정하였으나 xml이 너무 많아지면 오히려 유지보수성이 낮아지는 아이러니한 상황 발생 - 유지보수성에 방점 - 시스템 전체에 영향을 주고 이후에 변경 가능성이 있는 것은 xml로 설정.(DBCP 등) Annotation Annotation의 정의 정의 : 주석이 선언적 프로그래밍 모델( 메타데이터) 을 지원하는 기술. 컴파일, 런타임시에 반영한다. ※ 메타데이터 : 데이터의 데이터. 데이터를 설명하기 위한 데이터 (설정 정보) ex) @Repository, @Service, @Controller, @Autowired, @Resource Annotation이 나온 이유 IT가 발전하면서 프로그램의 규모가 방대해지면서 XML이 가지는 설정정보의 양..
JDBC, JPA, MyBatis? | Java와 DB 간 API 정리 Java에서 DB를 다룰 때 다양한 방식들이 있어서 이를 정리해보고자 한다. 1. JDBC 가장 기본적인 방식은 JDBC(Java Database Connectivity)이다. 사실 모든 DB를 다루는 기술은 여기서 시작되었다. DAO로 DB와의 연결을 관리하고, DB 간 통신 할 때 객체를 다루어주는 DTO, VO가 존재한다. 헌데 이 방식은 문제점이 존재했는데, 바로 Java 코드 내에 SQL쿼리문이 직접적으로 작성되었다는 것이다. 그래서 이를 타파하기 위해 2가지 방식이 생겨났다. 하나는 자주 쓰이는 SQL 쿼리문을 미리 정해놓고 사용하는 방식, 또 다른 하나는 SQL문이 아니라 DB 자체를 맵핑해놓고 사용하는 방식이다. 전자는 쿼리문, 후자는 DB를 맵핑하는 것으로 이해하면 된다. 2. SQL M..
자주 사용하는 Linux 명령어 자주쓰는 명령어 모음 pwd (print working directory) 현재 위치한 디렉토리 출력 $ pwd /c/Users/Snetsystems cd (change directory) 경로 이동 $ cd ls (list) 현재 위치한 디렉토리 내의 목록을 확인 $ ls cat (concatenate) 파일 보기 $ cat mkdir (make directory) 디렉토리 생성 $ mkdir touch 최신 수정일로 변경 $ touch rm (remove) 삭제 $ rm head 해당 파일 열람 $ head tail 해당 파일 열람 $ tail find 문자로 파일, 폴더 찾기 $ find grep $ grep 시스템/프로세스 관련 top 문자로 파일, 폴더 찾기 $ top shutdown ACPI ..
자바 웹기술 #2. 스프링 그리고 스프링 부트 앞서 말한 바와 같이, 모델2의 패턴으로 웹 어플리케이션을 구성하다 보면 공통되는 부분이 나타난다. 이렇게 반복되는 부분을 하나의 틀로 만든것이 프레임워크이고, 그 중 대표적인 것이 스프링 프레임워크이다. 반복되는 부분을 틀로 만들 때, 어떠한 사상과 철학이 들어가게 된다. 스프링 프레임워크의 사상은 DI, IoC, AOP로 요약할 수 있다. 스프링을 사용하기 이전에는 어떠한 로직을 만들 때 매번 객체를 만들어주어야 했다. 예를 들어, 서블릿과 JSP로 웹 프로그래밍을 할 경우, DB와 연결해줄 DAO를 만들 때 마다 매번 새로운 객체를 만들어서 로직을 짰다. 이 방식의 문제점은, 사용하던 DB를 다른 DB로 바꿀경우 DAO 역시 전부 다 수정해주어야 한다는 점이다. 예를 들어, 오라클을 사용하다가 My..
자바 웹기술 #1. 서블릿과 JSP 그리고 모델2 CGI(common gateway interface)의 한계, 펄이 가진 한계로 인해, 웹 어플리케이션 그리고 Java를 통한 웹 프로그래밍이 대두되었다. 이러한 시기에 Java로 웹을 다루는 것에 대한 많은 고민들이 이어졌고, 그에 따라 나온 것이 Servlet이라는 도구이다. Servlet 그리고 JSP의 차이점은, 서블릿은 Java 안에 HTML이 존재하는 구조이며, JSP는 HTML 안에 Java가 존재하는 구조라는 것이다. 또한 JSP는 서블릿에서 파생되어진 것이기 때문에, JSP를 실행할 경우, 이것이 Servlet(Java) 코드로 변환되고, 이것을 실행한 결과물인 HTML만 최종적으로 브라우저에서 보게 된다. Servlet에 관해서는 3가지 내용만 기억하면 된다. URL매핑, DB연동, 포..
웹 시스템의 삼층 구성 | 웹 서버, 어플리케이션 서버, 데이터베이스 서버 일반적으로 서버라 하면 하나의 종류만 생각한다. 사실은 우리가 사용하는 웹어플리케이션은 삼중 시스템으로 구현되어 있다. 웹 어플리케이션을 만들기 위해선 웹 서버, 어플리케이션 서버, 데이터 베이스 서버가 필요하다. 1) 웹 서버 : HTTP 요청와 응답을 처리, 정적인 페이지 2) 어플리케이션 서버 : 동적인 페이지를 처리, 데이터베이스를 다루는 라이브러리 탑재 3) 데이터베이스 서버 : 고유의 포트 존재, SQL로 조작 우리같은 개인 개발자가 간단히 개발할 때는 하나의 컴퓨터(노드)에 웹 서버, 어플리케이션 서버, 데이터 베이스 서버를 모두 설치한다. 예를 들어, Python으로 웹 개발을 할 때, 하나의 컴퓨터에서 Http요청, Python 로직, PostgreSQL을 설치한다. 허나 이러한 삼중 시..