본문 바로가기

전체 글

(104)
SpringBoot + JPA + Thymeleaf로 간단한 CRUD + Travis CI 사용해보기 프로젝트 SpringBoot + JPA + Thymeleaf로 간단한 CRUD + Travis CI 사용해보기 프로젝트 SpringBoot & Thymeleaf & JPA (& H2 & lombok) 예제를 사용한 아주 간단한 예제를 찾다가 괜찮은 CR 기능의 예제가 있어서 삭제 기능(D)까지 추가하여 포스팅을 하게 되었다. (*업데이트(U) 기능은 없다.)원본 링크는 맨 아래 참고 문서에서 확인이 가능하다.또한, 소스코드는 깃허브(shinsunyoung/springboot_study_CRUD)에서 확인이 가능하다. 개발환경 IntelliJ IDEA Ultimate JAVA JDK 1.8 SpringBoot 1.5.10.RELEASE Gradle 프로젝트 구조 controller, model, repository..
IoC, DI 개념과 간단한 예제 최근에 다시 공부하며 정리한 내용을 업로드했습니다! 이 글보다는 > https://shinsunyoung.tistory.com/133 < 포스팅을 읽는 것을 추천드립니다. IoC/DI 스프링 공부를 하면 가장 기본적인 내용이자 가장 어려운 내용이지만 중요한 내용인 IoC와 DI에 대해 정리해보았다. 컨테이너란? IoC와 DI를 이해하기 전에 먼저 이해해야 할 개념이 있다. 그것은 바로 '컨테이너'이다. 컨테이너란, 우리 대신 객체의 생성과 소멸 같은 부분을 전담해주는 역할을 한다. 비유를 하자면 주식을 주식 전문가에게 맡기는 것과 같다고 생각하면 된다. IoC란(Inversion of Control)? 그대로 해석을 돌리면 제어의 역전이라고 한다. 제어는 무언가를 조종하고 다루는 것, 역전은 바뀌는 것..
TDD 간단하게 알아보기(Test Drivent Development) TDD란 TDD = Test Driven Development → 테스트가 개발을 이끌어 나간다. TDD 사이클 (Test Drivent Development Cycle) 아래 사이클을 NodeJs에서 가장 많이 사용하는 Mocha를 이용해서 간단한 예제를 살펴보겠다. TDD와 함께하는 짝수/홀수 판별 프로그램 짝수면 "Event"을, 홀수면 "Odd"를 return하는 프로그램을 작성하여라. RED const assert = require('assert'); describe('짝수/홀수 판별', function () { function solution(num) { var answer = ''; return answer; } it('홀수(정답)', function () { assert.equal(solu..
크롬에서 파이어베이스 변경 내역이 적용이 안될 때 해결방법 문제의 발단 파이어베이스로 호스팅을 하기 위해 호스팅을 했는데 경로 문제로 인해 오류가 났다. 소스코드를 수정하고 다시 업데이트(deploy)를 한 후에 새로고침을 하니 업로드가 안되어있었다. 분명 Deploy complete 라고 나왔는데… 해결 방법 이것저것 찾아보다 속는셈 치고 시크릿창(Ctrl + Shift + N)을 눌러 접속하니 갑자기 됐다! 설마 … 하고 크롬의 캐시를 삭제하고 다시 들어가니 잘 들어가진다. 아마 캐시를 저장해둬서 새로고침을 해도 별 반응이 없었던 것 같다. 정리 시크릿창을 열어 확인해본다. 크롬의 캐시를 삭제한 후에 확인해본다.Ctrl + R (강력한 새로고침) 들어갈 때 마다 캐시를 삭제하기는 귀찮으니 강력한 새로고침(Ctrl+R)을 하면 될 것 같다.
데이터베이스의 트랜잭션(Database Transaction) 트랜잭션이란?(Transaction) 처음부터 끝까지 아무 이상없이 모든 작업이 끝나야만 성공하는 작업이 있다. 예를들어 카페에서 음료를 살 때의 상황을 예로 들어보자면 카페에서 주문을 할 수 있는 차례가 될 때 까지 기다린다. 메뉴를 선택한다. 직원에게 돈을 지불한다. 주문 완료 위의 4가지의 과정을 모두 마쳐야한다. 만약 여기서 한 과정이라도 빠지게 되면 정상적으로 주문을 했다고 볼 수 없다. 이처럼 한꺼번에 실행되어야하는 일련의 과정을 트랜잭션이라고 한다. 모두 완료하면 COMMIT, 하나가 실패하면 취소되는 ROLLBACK이라고 한다. COMMIT한 경우에는 작업 결과가 데이터베이스에 반영이 된다. ROLLBACK한 경우에는 작업이 모두 취소되어 데이터베이스에 영향을 끼치지 않는다. 트랜잭션의 성..
추상화(Abstract) 추상화란? 객체에서 공통된 속성과 행동을 추출하는 것이다. 자바에서 추상화를 이용하는 방법은 추상 클래스 또는 인터페이스가 있다. 추상 클래스(Abstract Class) 추상 메소드를 포함할 수 있는 클래스이다. abstract를 붙여 사용할 수 있다. 부모로서의 사용은 가능하지만 객체로서의 사용은 불가능하다. 추상 메소드(Abstract Method) 본체가 없는 메소드이다. 리턴 타입 앞에 abstract를 붙여 사용할 수 있다. 추상 메소드의 본체는 추상 클래스를 상속받은 후 재정의할 수 있다. abstract class Animal{ // 추상클래스 public abstract void eat(); //추상 메소드 public abstract void sleep(); //추상 메소드 public..
MVC 패턴(MVC Pattern) MVC란? 애플리케이션을 모델(Model), 뷰(View), 컨트롤러(Controller)인 세 부분으로 나눈 디자인 패턴 Model : 데이터, 비즈니스 로직 View : 사용자에게 보여주는 화면 Controller : Model과 View를 연결함 ⓐ : User가 요청함 (ex. 웹 페이지에 접속함) ⓑ : Controller가 Model에게 로직을 받아옴 (ex. 웹 페이지에 해당하는 로직을 받아옴) ⓒ : Controller가 View에게 뿌려줌 (ex. 해당하는 로직을 View에게 뿌려줌) ⓓ : User는 화면을 볼 수 있음 (ex. 웹 페이지를 볼 수 있음) 모델(Model) 뷰와 컨트롤러에 의존하지 않는다. 데이터베이스나 비즈니스 로직(+DAO)처럼 데이터와 데이터가 동작하는 방식을 제공..
응용된 정렬 방법들 (셸, 병합, 퀵)에 대해 알아보자 응용된 정렬 방법들 (셸, 병합, 퀵) 이 게시글은 정렬의 코드보단 정렬의 방법과 특징에 비중을 두고 있습니다.기본적인 정렬 방법들 (선택, 삽입, 버블) 보러가기 정렬의 종류와 시간복잡도 정렬은 버블 정렬, 선택 정렬, 삽입 정렬, 셸 정렬, 병합 정렬, 퀵 정렬로 이루어져있으며, 각각의 특징이 있으므로 상황을 고려해서 쓰는 게 좋다. 응용된 정렬 알고리즘(1) - 셸 정렬(Shell Sort) 셸 정렬의 과정 셸 정렬은 삽입정렬을 보완한 알고리즘이다. 일정한 간격 gap끼리 묶어 삽입 정렬을 수행(gap=배열의 길이/2) 간격을 줄여나가면서(gap = gap/2) 간격(gap)이 1이 될 때까지 삽입정렬을 반복 직접 짧은 정렬을 만들까하다가 셸 정렬을 보여주기에는 조금 긴 정렬이 나을 것 같아 동영상..