HTML(Hyper Text Markup Language) 웹페이지를 표현하기 위한 언어이다. 이름에 하이퍼텍스트가 들어가는데 하이퍼텍스트는 참조(하이퍼링크)를 통해 한 문서에서 다른 문서로 접근하는 텍스트를 의미한다. HTML이 개발된 이유는 1980년 CERN에서 정보를 공유하기 위해서 인터넷 기반 정보공유 체계를 만들었는데 여기서 정보를 표현하기위한 방식이 하이퍼텍스트로 작성된 문서 HTML이다. DOM 이란? Document Object Model의 줄임말이며, DOM이라는 것을 통해 우리는 모든 문서 Document Element의 Object(객체), Property(속성), Method(동작)을 정의하고 접근할 수 있다. DOM을 구성하는 Element들은 하나의 Node 단위로 표현될 수 ..

try() 문법 try(InputStream in = connection.getInputStream();) { } catch { } try() 문법은 JDK1.7 에서 추가된 문법으로 Closable을 implements 받고있는 객체를 사용할때 자동으로 close 해준다. HTML Method HTML form은 기본적으로 GET, POST 메소드만 사용 가능함. REST API 설계 기반으로 개발할때 사용되는 PUT, DELETE 등의 메소드는 AJAX와 같은 비동기통신 라이브러리에서 사용할 수 있다. 302 redirection의 필요성 post로 서버에게 요청을 보낸 뒤 새로고침을 하면 보낸 데이터 정보가 그대로 남아있어서 그 데이터가 다시 전송되는 문제가 있음 완벽히는 아니지만 어느정도 이 문제..

MVC구조 이해를 위한 MVC프레임워크 직접구현 구현 질문/답변 게시판 회원가입 로그인/로그아웃 개인정보 수정 실습환경 GitHub JDK 8 eclipse Maven 프로젝트 Fork github.com/lurutia/web-application-server Fork 후 eclipse에서 clone한 후 실습을 진행하도록 하는것이 본인의 소스를 보관할 수 있어서 권장 Fork -> eclipse open perspective -> Git -> git repository 우클릭 -> import projects 원격 서버에 배포 요구사항 ubunutu 14.04 LTS 에 배포한다. AWS에 대한 회원가입, 우분투 운영체제 설치, SSH를 통한 접근은 opentutorials.org/module/1946..

2장 문자열 계산기 구현을 통한 테스트와 리팩토링 이 내용은 위 책의 내용을 공부하기 위해 정리한것입니다. 왜 테스트를 따로 구현할까? main()메소드에 구현하면 생기는 문제점 배포시에 필요가 없지만 함께 배포된다. (배포시 코드를 제거해주는 작업을 해줘야한다) 하나의 main()에서 여러가지 테스트를 동시에 진행하면 복잡도가 상승한다. 테스트 관심사에 따라 method로 분리하더라도 일일이 테스트하고자 하는 메소드만 선택해야 하는것도 불합리함 테스트의 출력결과를 미리 예상한 결과와 수동으로 비교해야함. java project에서 junit 추가하기 Java project를 최초 생성하면 JUnit이 class path에 추가되어있지 않아서 테스트를 실행할 수 가 없다. project-propertie..
개요 최근 Checked Exception과 Runtime Exception의 차이에 대해서 질문을 받았는데 구체적인 차이를 모르고 있었다가 조사를 해보니 Rollback 전략에 대해서 큰 차이가 있어서 생각보다 신중한 전략이 필요했는데 알지 못했다는 점이 스스로도 아쉬웠습니다. JAVA에는 두가지 유형의 예외가 있습니다. Checked Exception과 Unchecked Exception 둘의 차이를 표로 비교해보면 아래와 같습니다. Checked exception Unchecked Exception 정의 Exception을 상속받은 클래스중 Runtime Exception을 제외한 모든 Exception Runtime Exception 하위 Exception 발생 이유 주로 외부의 영향으로 발생 주..
개요 SOILD는 Robert C. Martin이 정한 객체지향 디자인(OOP)의 5가지 원칙의 약어입니다. 프로젝트가 성정함에 따라 유지 관리 및 확장성을 고려하여 소프트웨어를 개발할 수 있게 도와줍니다. S - SRP(단일책임의 원칙 : Single Responsibility Principle) O - OCP(개방폐쇄의 원칙 : Open Close Principle) L - LSP(리스코브 치환의 원칙 : The Liskov Substitution Principle) I - ISP(인터페이스 분리의 원칙 : Interface Segregation Principle) D - DIP(의존성 역전의 원칙 : Dependency Inversion Principle) 하나하나 알아보도록 하겠습니다. S - S..
Inmutable Push function immutablePush(arr, newEntry){ return [ ...arr, newEntry ] } Inmutable Pop function immutablePop(arr){ return arr.slice(0, -1) } Inmutable Unshift function immutableUnshift(arr, newEntry){ return [ newEntry, ...arr ] } Sort function immutableSort(arr, compareFunction) { return [ ...arr ].sort(compareFunction) } // or... function immutableSort(arr, compareFunction) { return..
문제 프로젝트 진행중 객체를 import 했더니 undefined가 출력되는 문제가 발생했습니다. 코드의 문제는 아닌것 같았습니다. 검색해본 결과 순환참조 때문이라고 판단이 되었습니다. 원인 1. A파일에서 B파일을 import 합니다. 2. B파일에는 C파일을 import 하라고 합니다. 3. C파일을 load하기 시작합니다. C파일에서는 A파일을 load하라고 합니다. 4. A파일은 이미 로드되었기 때문에 캐시에서 즉시반환합니다. 하지만 A파일은 아직 B파일을 import하는 코드를 완료하지 못했기때문에 undefined 값을 export 합니다. 위와같은 문제로 제대로 import 되지않고 undefined 를 불러오지않았나 생각됩니다. 순환참조 문제는 그 자체만으로는 문제가 되지 않지만 문제가 생..