본문 바로가기

전체 글

(165)
패스트캠퍼스 스프링의 정석 : 남궁성과 끝까지 간다 온라인 후기 남궁성 강사님과의 인연은 작년 백엔드 개발자를 꿈꾸며 처음 자바를 접했을 때다. 비전공자였던 나는 서점을 돌아다니며 Java니, C언어니 외계어 같았던 전공책들을 보면서 "우와... 누가 저런걸 봐"라고 생각했던 적도 있었다. 그만큼 나에게 개발은 어려운 영역이었다. 하지만 시간이 지나고, 개발직으로 취업을 결심했을 때 더 이상 남일이 아니었다. 어렵지만 돌파해야 하는 일이 되어버렸다. 막막함을 이겨내야만 했다. 그래서 선택한 것이 '자바의 정석'이었다. 아무것도 모르니 가장 유명한 책을 사자는 마음이었다. 당시 남궁성 강사님은 자바의 바이블 같은 존재였다. 그렇게 자바의 기초를 배우고 나니, 백엔드 개발자가 되기 위한 수 많은 기술과 지식들이 눈 앞에 놓여졌다. 그 중에서도 스프링은 나에게 처음 자바를..
패스트캠퍼스X야놀자 부트캠프: 토이 프로젝트 1 (여행 여정을 기록과 관리하는 SNS 서비스 1단계) 후기 개요 드디어 팀 프로젝트가 시작이다. 이전 두 번의 과제는 개인이었기에 다른 사람들과 함께 작업하는 것 자체가 낯설었다. 특히 한 번도 보지 못한 채 오로지 온라인으로 만난 상태로 프로젝트를 진행해 본 경험이 전혀 없었다. 따라서 어떤 상황이 벌어질지 예상이 안돼서 걱정이 됐다. 팀원들도 랜덤으로 선별되어 그룹 스터디 사람들과 겹치는 인원이 단 한 명도 없었다. 프로젝트에서 내가 어떤 도움이 될 수 있을지, 또 의견 조율은 어떻게 할지 모든 게 불확실했다. 그런 상태로 첫 프로젝트를 맞이했다. 토이 프로젝트의 최종 구현 목표는 "여행 여정을 기록하고 관리하는 SNS 서비스"이다. 이를 위해 총 3단계로 진행된다. 먼저 1단계는 오로지 Java 프로그램으로 구동되어야 한다. 이후 2단계는 Spring 프로..
패스트캠퍼스X야놀자 부트캠프: Java 심화과제 2 (책 검색 및 데이터베이스 Java 애플리케이션 개발) 후기 개요 첫 번째 과제에 대한 리팩토링을 하기도 전에 두 번째 과제가 올라왔다. 이번에는 카카오 검색 API를 이용해 책을 검색하고, 해당 데이터를 DB에 저장하는 것이다. 첫 번째 과제에서 시도했던 로직들 중 JSON 형태로 값을 받아오는 건 동일하게 진행하면 될 듯싶었다. 지난 과제에서 아쉬웠던 부분들을 보완해서 조금 더 객체지향적인 코드로 만들기 위해 노력하기로 다짐했다. 과제 요구사항 크게 아래와 같이 5가지의 요구사항이 있다. 1. 사용자로부터 책 검색어를 입력받는다. 2. 카카오 책 검색 API를 이용해 입력받은 검색어를 토대로 최대 10건의 결과를 받는다. 3. 받은 결과를 콘솔창에 정해진 포멧으로 출력한다. 4. DB에 저장할 것인지 여부를 Y/N 로 입력받는다. 5. 사용자의 선택에 따라 D..
패스트캠퍼스X야놀자 부트캠프: Java 심화과제 1 (위치기반 장소 검색 Java 애플리케이션 개발) 후기 개요 드디어 패스트캠퍼스X야놀자 부트캠프에서 마주한 첫 과제이다. 솔직히 처음 예상했던 주제는 첫 과제인 만큼, 배열이나 변수 정도로 만드는 간단한 프로젝트일 줄 알았다. 하지만 예상과 달리 외부 API, 즉 카카오 맵을 통해 JSON으로 정보를 받아와서 파싱을 해야 했다. 지금 돌이켜보면 크게 어렵지 않은 로직이지만, 처음 이 과제를 봤을 때만 해도 JSON으로 정보를 주고받는 경험이 거의 전무하던 때라 약간 당황했다. 하지만 JSON은 웹 프로그래밍에서 필수로 다뤄야 하는 영역이고, 이 시점에 배우는 것도 좋은 거라는 마인드로 바꿨다. "어렵다는 건 단지 익숙하지 않다는 것이다"는 격언을 기억하며 과제를 시작했다. 과제 요구사항 크게 아래와 같이 4가지의 요구사항이 있다. 1. 검색하고 싶은 위치를 ..
Ch.11 보안과 권한 관리 [데이터베이스 개론] 보안 데이터베이스의 보안을 유지하여 데이터를 보호하는 방법은 크게 세 가지 유형으로 구분된다. 물리적 환경에 대한 보안 자연재해처럼 데이터베이스에 물리적으로 손실을 발생시키는 위험으로부터 보호한다. 권한 관리를 통한 보안 접근이 허락된 사용자만 부여된 권한 내에서 데이터베이스를 사용할 수 있도록 한다. 계정이 발급된 사용자만 데이터베이스에 접근할 수 있도록 통제하고, 사용자별로 데이터베이스의 사용 범위와 수행 가능한 작업 내용을 제한할 수 있다. 운영 관리를 통한 보안 접근이 허락된 사용자들이 부여된 권한 내에서 데이터베이스를 사용하고, 정의된 제약조건을 위반하지 않도록 통제한다. 권한 관리를 통한 보안은 권한이 없는 사용자로부터 데이터베이스를 보호하는 것이고, 운영 관리를 통한 보안은 무결성 유지를 통..
Ch.10 회복과 병행 제어 [데이터베이스 개론] 트랜잭션 트랜잭션의 개념 트랜잭션(transaction)은 작업 하나를 수행하는 데 필요한 데이터베이스의 연산들을 모아놓은 것으로, 데이터베이스에서 논리적인 작업의 단위가 된다. 따라서 데이터베이스에 장애가 발생했을 때 데이터를 복구하는 작업의 단위가 된다. 데이터베이스는 항상 모순이 없는 정확한 데이터를 유지해야 한다. 그리고 장애가 발생하더라도 빠른 시간 내에 원래 상태로 복구할 수 있어야 한다. 이를 위해 DBMS는 다양한 기능을 제공하는데, 그 중심에 트랜잭션이 있다. 트랜잭션을 관리함으로써 데이터베이스의 회복과 병행 제어가 가능하다. 예를 들어, 인터넷뱅킹을 통해 계좌이체 작업을 수행하기 위해선 2개의 데이터베이스 연산을 처리해야 한다. 즉 계좌이체 트랜잭션은 2개의 연산으로 구성할 수 있다. ..
Ch.9 정규화 [데이터베이스 개론] 정규화의 개념과 이상 현상 정규화의 개념 데이터베이스를 설계한 후 설계 결과물을 검증하기 위해 사용한다. 데이터베이스를 잘못 설계하면 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터의 삽입, 수정, 삭제 연산시 부작용이 발생할 수 있다. 이러한 부작용을 이상 현상이라고 하는데, 이상 현상을 제거하면서 데이터베이스를 설계해나가는 과정을 정규화라고 한다. 이상 현상의 종류 3가지 이상 현상이 존재한다. - 삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 - 갱신 이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제 - 삭제 이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제 예시로 잘못 설계된 릴레이션을 참고해보자..
Ch.8 데이터베이스 설계 [데이터베이스 개론] - 데이터베이스 설계의 5단계를 설명하고, 각 단계에서 주요 작업은 무엇인가? 더보기 요구사항 분석 - 요구 사항 명세서 개념적 모델링 - 개념적 스키마(E-R 다이어그램) 논리적 모델링 - 논리적 스키마 물리적 모델링 - 물리적 스키마 구현 - 데이터베이스 - E-R 모델과 관계 데이터 모델의 차이는? 더보기 E-R 모델은 개체와 관계를 구분한다. 하지만 관계 데이터 모델의 개체와 관계를 구분하지 않고 모두 릴레이션으로 표현한다. 또 E-R 모델에서는 다중 값 속성과 복합 속성의 표현을 허용하는 반면, 관계 데이터 모델에선 허용하지 않는다. 데이터베이스 설계 단계 모든 조직 구성원들의 다양한 요구 사항을 만족시키는 데이터베이스 구축은 매우 어렵다. 그리고 데이터베이스는 한 번 잘못 구축되면 데이터베이스..
HTTP를 이해하자 [프로가 되기 위한 웹기술 입문 도서] - URI와 URL의 차이 - HTTP 요청의 구성 요소 - HTTP 응답의 구성 요소 - Accept 필드가 있는 이유 - HTTP에서 한글을 쿼리 문자열로 사용하는 방법 - 포트란 무엇인가? 웹 브라우저와 웹 서버의 통신 다른 컴퓨터와 통신을 하기 위해선 정보를 주고받기 위한 '약속'이 필요하다. 그리고 www 세계에선 웹 클라이언트와 웹 서버가 HTML을 주고 받기 위해서 HTTP(Hyper Text Transfer Protocol)을 이용한다. HTTP 요청 요청 라인(Request - Line)는 첫 번째 줄로 HTTP 요청에서 가장 중요한 부분이다. GET http://www.wikibook.co.kr/webtext/http/index.html HTTP/1.1 a) 메소드 요청의 종류를 나타낸..
Ch.7 데이터베이스 언어 SQL [데이터베이스 개론] - 관계 해석과 SQL의 차이 : 관계 해석을 응용한 것이 SQL이다? - SQL문 직접 작성해보기 _ 테이블 생성 (제약조건, 외래키 설정) _ 원하는 데이터 조작하기 - 집계 함수의 종류와 주의 사항 더보기 SUM, AVG, COUNT, MAX, MIN SUM, AVG 는 숫자 데이터 타입만 사용할 수 있고, COUNT, MIN, MAX는 모든 데이터 타입에 사용 가능하다. NULL 값은 연산에 포함시키지 않으며, SELECT와 HAVING 절에서만 사용 가능하다. WHERE 절에선 사용 불가! - 뷰를 만들 수 있는 기반은 총 몇개이며 뭐라고 하는가? 더보기 기본 테이블, 뷰 - 뷰에 새로운 데이터를 추가할 때 WHERE 절에 정의된 조건의 데이터만 허용하는 키워드는 무엇인가? 더보기 WITH CH..
Ch.6 관계 데이터 연산 [데이터베이스 개론] - 관계 대수와 관계 해석의 공통점과 차이점 - 관계 대수의 종류 - 우리가 관계 대수와 관계 해석을 알아야 하는 이유 - 조인의 종류 관계 데이터 연산의 개념 연산(operation)은 원하는 데이터를 얻기 위해 릴레이션에서 필요한 처리 요구를 수행하는 것이다. 관계 데이터 모델의 연산은 크게 두 가지로 나뉜다. - 관계 대수 (relational algebra) - What + How 관계 대수는 수학적인 기법을 이용하여 데이터를 처리한다. 일련의 연산을 통해 데이터를 추출하고 조작하는데, 관계형 데이터베이스의 테이블과 열을 수학적으로 다룬다. 관계 대수로 원하는 결과를 얻기 위해선 데이터의 처리 과정을 순서대로 기술하기 때문에 절차 언어(procedural language)라고 한다. - 관계 해석..
Ch.5 관계 데이터 모델 [데이터베이스 개론] - 관계 데이터 모델의 정의는 무엇인가? - 관계 데이터 모델을 사용하는 이유? - 도메인의 예시와 장점은? - 릴레이션의 4가지 특성 - 키의 종류와 차이점 - 기본키를 선택할 때 고려해야 하는 기준? - 기본키를 참조하는 외래키의 특성 (이름 동일 여부, 도메인 동일 여부) - 외래키의 특성 (외래키는 기본키만 참조할 수 있는가?) - 무결성 제약조건의 종류와 예시 관계 데이터 모델의 개념 관계 데이터 모델이란 무엇인가? 데이터베이스 시스템을 구현하기 위해선, 먼저 개념적 모델링을 통해 데이터베이스에서 다룰 개념들 간의 관계를 정의해야 한다. 일반적으로 개체-관계 모델을 이용하며, E-R 다이어그램을 도구로 사용한다. 이후 개념적 모델링 결과물을 이용하여 데이터베이스의 테이블과 컬럼, 각 테이블의 관..
Ch.4 데이터 모델링 [데이터베이스 개론 도서] - 개념적 모델링과 논리적 모델리의 정의 - 속성의 종류 - 매핑 카디널리티 개념 - 관계의 유형과 예시 데이터 모델링과 데이터 모델의 개념 현실 세계의 모든 정보를 컴퓨터에 그대로 담기란 불가능하다. 그래서 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정을 거쳐야 한다. 이 과정을 데이터 모델링(data modeling)이라고 한다. 하지만 데이터 모델링은 쉽지 않은 과정이다. 현실 세계와의 큰 차이가 존재하고, 방대한 양의 데이터 중 필요한 데이터만 선별하는 것도 비용이 들기 때문이다. 그래서 일반적으로 현실 세계의 객체를 컴퓨터 세계로 옮길 땐 여러 단계를 거친다. 먼저 사람의 머릿속에 연상시킬 수 있는 중요한 데이터를 찾아 개념 세계로 옮긴 뒤, 이를 컴퓨터 세계에 저..
Ch.3 데이터베이스 시스템 [데이터베이스 개론 도서] - DB, DBMS, DMS의 차이 - 스키마와 테이블의 차이 - 3단계 데이터베이스 구조 - 3단계 데이터베이스로 구조를 나누는 이유 - 데이터 사전과 데이터 디렉토리는 사용자가 접근 가능한가? - 데이터 언어의 종류와 예시 SQL 명령어 데이터베이스 시스템의 정의 데이터베이스(DB), 데이터베이스 관리 시스템(DBMS), 데이터베이스 시스템(DBS)의 차이를 알고 있는가? - 데이터베이스(DB): 데이터를 저장하는 공간 - 데이터베이스 관리 시스템(DBMS): 데이터베이스를 관리하는 소프트웨어 - 데이터베이스 시스템(DBS): DB와 DBMS를 포함하는 상위 개념 데이터베이스의 구조 DB를 공부하다보면 스키마란 용어를 굉장히 많이 보게 된다. DB 입문자들은 '스키마'가 테이블(table)와 비슷하단..
웹 애플리케이션이란? - 웹 애플리케이션이란 무엇인가? - www란 무엇인가? - www 3대 요소 (HTML, HTTP, URI) - 웹 서버와 웹 클라이언트. 왜 클라이언트와 서버로 역할을 나누는가? - CGI의 필요성과 개념 - 서블릿의 등장과 개념 - JSP의 등장과 개념 웹 애플리케이션(web application)이란 무엇인가? 웹 서버를 통해 간접적으로 실행시키는 프로그램 웹 세계를 탐험하기 전, 웹 애플리케이션이 무엇인지부터 알아보자. 일단 애플리케이션(application)은 '응용 프로그램'을 의미한다. 그 앞에 웹(web)이 있다. 즉 말 그대로 웹 브라우저에서 실행되는 소프트웨어인 것이다. 어라? 그러면 웹 브라우저에서 구동된다는 건 무슨 의미일까? 일단 우리 컴퓨터에 저장된 소프트웨어를 생각해보자. 무..