본문 바로가기

전체 글

(77)
Intellij 파일 에디터 기능 안할 때 인텔리제이를 업데이트하고 어느 순간부터 application.properties 파일이 아래와 같이 텍스트 파일처럼 아이콘이 바뀌고 텍스트 에디터 또한 작동하지 않았다. Settings>Editor>File Types를 확인해보니 properties 파일이름 패턴이 Text 파일에 추가되어 있었다. File name patterns에서 *.properties를 지우고 Properties 파일 타입에 *.properties를 추가해 주었다. (Text에서 *.properties를 삭제하지 않아도 Properties에 *.properties를 추가할 때 Text 파일 타입에 *.properties 패턴을 지우라는 팝업메시지가 뜬다) 그 후 APPLY.버튼을 누르면 바로 적용되어 properties 파일이 정..
TDD의 장점 개발의 방향을 잃지 않게 유지해준다. 현재 자신이 어떤 기능을 개발하고, 어디까지 와 있는지를 항상 살펴볼 수 있고, 남은 단계와 목표를 잊지 않게 도와준다. 품질 높은 소프트웨어 모듈 보유 TDD를 통해 만들어진 애플리케이션은 필요한 만큼 테스트를 거친 '품질이 검증된 부품'을 갖게 되는 것이다. 자동화된 단위 테스트 케이스를 갖게 된다. TDD의 부산물로 나오는 자동화된 단위 테스트 케이스들은, 개발자가 필요한 시점에 언제든지 수행해볼 수 있다. 그리고 즉시 현재까지 작성된 시스템에 대한 이상 유무를 바로 확인할 수 있다. 또한 기능 추가와 수정에 수행해야 하는 회귀 테스트에 대한 부담도 줄어든다. 사용설명서 & 의사소통 수단 TDD로 작성된 각 모듈에는 테스트 케이스라고 하는 테스트 코드가 개발 종..
Application Layer 네트워크 어플리케이션 구조 네트워크 어플리케이션 구조는 개발자에 의해 설계되고, 개발자는 어플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는지를 지시한다. 네트워크 어플리케이션 구조에는 클라이언트-서버 구조과 P2P구조가있다. 클라이언트-서버 구조 항상 켜져있는 호스트를 서버(server)라 부르고, 서버는 클라이언트라는 다른 호스트의 요청을 받는다. 클라이언트 호스트는 가끔 혹은 항상 켜져 있을 수 있다. 이 구조에서 클라이언트는 서로 직접적으로 통신하지 않는다. 서버는 고정IP를 갖고 항상 작동중이므로 클라이언트는 서버 주소로 패킷을 보내서 항상 서버에 연결할 수 있다. P2P 구조 항상 켜져 있는 기반 구조 서버에 최로로 의존하거나 의존하지 않는다. 대신에 피어(Peer)라는 간헐적으로 연..
Transaction Transaction이란 트랜잭션은 질의어를 통해 데이터베이스에 접근하여 일을 수행하는 작업의 단위이다. 이 작업의 단위라는 것은 서비스에 맞게 설계된대로 개발자가 정한 기준에 따라 정해진다. 즉 질의어 한문장이아니라 상황에 따라 여러문장으로 이루어질 수 있다. 트랜잭션의 특징 원자성(가장 중요) 하나의 트랜잭션은 결국 성공하여 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되어서는 안된다. 여러 SQL문으로 이루어진 작업의 단위 트랜잭션을 중간단계 까지만 반영하면, 개발한 사람의 의도대로 실행되지 않아 오작동할 수 있다. 일관성 트랜잭션의 작업 처리 결과는 항상 일관성 있어야한다. 독립성 현재 수행중인 트랜잭션이 완료될 떄까지 트랜잭션이 생성한 중간 연산 결과에 다른 트랜잭션들이 접근할 수 없다. 지..
정규화와 반정규화 이상(Anomaly) 정규화 되지 않은 데이터베이스에서 데이터 중복으로 인해 발생하는 데이터 불일치 현상을 말한다. 갱신 이상: 반복된 데이터 중에 일부만 갱신할시 발생하는 데이터 불일치 삽입 이상: 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는 것이 불가능 삭제 이상: 필요한 정보를 함께 삭제하지 않고 서는 어떤 정보를 삭제한는 것이 불가능 이러한 이상현상을 정규화를 통해 방지할 수 있다. 정규화란 관계형 데이터에스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업이다. 데이터의 중복은 저장공간을 낭비하고, 어떤 한 데이터가 갱신됐을 때 다른 데이터에는 반영되지 않는 문제가 발생할 수 있다. 이러한 문제를 해결하기 위해 단계를 나누어 정규화 과정을 거쳐 정규화를 진행한다. 제 1정규화 ..
SQL vs NO SQL SQL과 NO SQL SQL과 NO SQL은 데이터베이스 세계을 양분하는 데이터 저장 방식으로, 저장방식의 차이에 따라 생성, 조회, 수정 등에서 각각 다른 특성과 장단점을 가진다. 이 두가지에 대해 간단히 알아보고 장단점에 대해 알아보도록 하겠다. SQL SQL은 'Structured Query Language(구조화된 쿼리 언어)' 의 약자로, 관계형 데이터베이스를 사용하는데 사용하는 쿼리 언어이다. 보통 관계형 데이터베이스라는 의미로도 사용한다. SQL에는 두가지 특징이 있다. 데이터는 정해진 엄격한 데이터 스키마(=structure)를 따라 데이터베이스 테이블에 저장 데이터는 관계를 통해서 연결된 여러개의 테이블에 분산 엄격한 스키마 데이터는 테이블에 레코드로 저장되며 각 테이블에는 명확하게 정의..
SQL Injection 위키백과에 따르면, SQL Injection은 응용 프로그램 보안 상의 허점을 의도적으로 이용해, 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 코드 인젝션 공격 방법을 말한다.예를들어 클라이언트에서 어떠한 문자열을 입력하고 그 문자열을 기반으로 데이터베이스에서 조회 SQL을 실행하는 경우, 문자열에 SQL 구문을 입력하므로써 기존 개발자가 의도한 동작과 다른 형태로 동작하도록 하는 것이다. SQL 인젝션에는 세가지 종류가 있다. Error based SQL Injection 논리적 에러를 이용한 SQL Injection 으로 가장 대중적인 공격 기법이다. 입력값에대한 검증이 없다면 언제든지 발생할 수 있다. Union based SQL Injection Union 명령어를 이..
SQL JOIN에 대해(작성 중) JOIN 이란 SQL에서 JOIN은 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현하는 것이다. 정규화된 테이블들 사이에서 필요한 데이터의 조합을 상황에 맞게 추출해 내는 역할을 한다. JOIN의 종류에 따라 아래와 같이 분류할 수 있다. INNER JOIN CROSS JOIN OUTER JOIN FULL OUTER JOIN SELF JOIN 지금부터 각각의 조인에 대해서 자세히 알아보겠다. INNER JOIN 가장 기본적인 조인 형식이다. 내부 조인은 구문에 기반한 2개의 테이블의 컬럼 값을 결합함으로써 새로운 결과 테이블을 생성한다. 결합할 때, 조건에서 동일한 값이 있는 튜플만을 반환한다. 예를 들어 100개의 튜플을 가지는 두개의 테이블이 있을 때 결합되는 컬럼값이 50개라..