본문 바로가기

전체 글

(143)
[CS 지식 - 개발상식] TDD의미 및 장점 1. TDD(Test Driven Development)란? 테스트 주도 개발 반복 테스트를 이용한 소프트웨어 방법론 → 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현 짧은 개발 주기의 반복에 의존하는 개발 프로세스 2. TDD 개발주기 Red : 실패하는 테스트코드를 먼저 작성 Green : 테스트 코드를 성공시키기 위한 실제 코드 작성 Blue : 중복코드 제거, 일반화등의 리팩토링 수행 → 실패하는 테스트 코드를 작성할 때까지 실제코드를 작성하지 않는것 실패하는 테스트를 통과할 정도의 최소 실제코드를 작성해야함 → 이를 통해, 실제 코드를 명확하게 정의함으로써 불필요한 설계를 피할 수 있고 , 정확한 요구사항에 집중 할 수 있음 3. 일반 개발 방식 vs ..
[CS 지식 - 개발상식] 함수형 프로그래밍 1. 프로그래밍 패러다임 대표적으로 절차적, 개체지향, 함수형 프로그래밍 존재 크게 분류하면 명령형, 선언형 프로그래밍 명령형(Imperative) 프로그래밍 선언형(Declarative) 프로그래밍 정의 프로그래밍 상태와 상태를 변경시키는 구문의 관점에서의 연산을 설명 필요한 것이 어떤 것인지를 기술하는 것에 초점을 맞추는 프로그래밍 구조 분류 절차적 프로그래밍 (수행되어야 할 연속적인 계산 과정 포함) 객체지향 프로그래밍 (객체들의 집합으로 프로그램의 상호작용을 표현) 함수형 프로그래밍 (순수 함수를 조합하고 프로그램을 만드는 방식) 언어 C,C++, Java, Pascal, Ruby HTML, Lisp, Haskell, Prolog,SQL,XML 2. 함수형 프로그래밍 하나의 프로그래밍 패러다임으로..
[CS 지식 - 개발 상식] MSA(Micro Service Architecture) 1. 모놀리식 아키텍쳐(Monolithic Architecture) 모놀리기식 아키텍쳐는 MSA의 반대되는 개념 애플리케이션의 모든 구성 요소가 한 프로젝트에 통합되어 있는 형태 단일 코드 베이스의 애플리케이션 1-1. 장점 개발초기에 단순한 아키텍쳐 구조와 개발에 용이 단순성 : 모든코드가 단일 코드 베이스에 있음 변경사항이 발생 할 경우 필요한 모든 코드가 한 곳에 존재한다는 의미 간편한 배포 : 단일 프로젝트로 배포하면 되기 때문에 간편 새로운 기능이 추가되거나 버그가 수정될떄마다 단일 애플리케이션을 배포하면 됨 보편성 디버깅이 쉬움 1-2. 단점 서비스 규모가 커지면 유지보수가 어려움 부분 장애가 전체 서비스의 장애로 확대될 수 있음 배포 시간이 오래걸림 기술 사용 제한 : 한 Framwork와 ..
[CS지식 - Spring] @Controller와 @RestController차이 1.@Controller 1-1. Controller로 View반환하기 Client는 URI형식으로 웹 서비스 요청을 보냄 DispatcherServlet이 요청을 위임할 HandlerMapping을 찾음 HandlerMapping을 통해 요청을 Controller로 위임 Controller는 요청을 처리한 후에 ViewName을 반환 DispatcherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를 찾아 사용자에게 반환 → 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 Viwe를 반환하기 위해 사용 1-2. Controller로 Data반환하기 Client는 URI 형식으로 웹 서비스에 요청을 보냄 DispatcherServlet이 요청을 위임..
[CS지식 - 개발 상식] 클린코드 1. 클린코드 의미 원하는 로직을 빠르게 찾을 수 있는 코드, 누구나 이해하기 쉽도록 작성된 코드, 읽기 쉬운 코드 → 명확한 이름, 중복 최소화, 가독성 높이기 클린코드의 특성 1. 모든 테스트 실행 2. 중복 제거 3. 프로그래머의 의도 표현 4. 클래스와 메서드 수의 최소화 2. 클린코드 중요성 유지보수 시간의 단축 → 코드리뷰, 코드파악, 디버깅 시간 단축 3. 클린코드 필요 이유 Technical Debt 발생 → 차이가 생기는 이유 : 개발초기에 클린코드로 개발하기 보다는 좀 더 빠르고 쉬운 방법을 선택하기 때문 ex) copy& paste → 이상적인 변경비용과의 차이가 나는 부분 : Technical Debt(기술 부채) 현 시점에서 더 나은 접근방식보다 더 쉬운 솔루션을 채택함으로써 발생..
[CS지식 - 개발 상식] 절차지향(PP) vs 객체지향(OOP) 1. 절차지향(PP) 기능중심으로 바라보는 방식 어떤기능을 어떤 순서로 처리하는가에 초점을 맞춤 단점 - 유지보수의 어려음 - 엄격한 실행순서로 인한 비효율적 → 절차지향언어의 단점을 보안하기 위해 객체지향의 개념이 등장함 2.객체지향(OOP) 2-1. 객체지향 정의 Object Oriented Programming 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식 객체 : 프로그램상에서 구현할 대상 클래스 : 객체의 '속성'과 '기능'을 정의한 설계도와 같은 것 인스턴스 : 클래스의 내용대로 메모리상에 구현될 실재(일반적인 의미의 객체) 2-2. 객체지향 특성 캡슐화 상속 추상화 다형성 → 이 특징들은 모두 유기적으로 연결된 개념 2-..
[CS지식 - 개발 상식] MVC 패턴 1. 디자인 패턴 소프트웨어 디자인과정에서 자주 발생하는 문제들에 대한 전형적인 해결책 →SW에서 설계적 관점으로 좀 더 쉽고 간편하게 개발하는 방법(패턴) MVC패턴 또한 디자인패턴의 한 종류 2. MVC 패턴 정의 Model, View, Controller의 약자 → 프로젝트(또는 애플리케이션)를 구성할 때 세가지의 역할로 구분한 개발 방법론 사용자가 Controller 조작 → Model을 통해 데이터를 가져옴 → View에서 제어해 사용자에게 전달 2-1. Model 모델 백그라운드에서 동작하는 비즈니스 로직(데이트)처리 / 프로젝트(애플리케이션)의 정보, 데이터 규칙 - 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다 - View나 Controller에 대해서 어떤 정보도 알지 말아야..
[error - spring]_Uncaught TypeError : Cannot read properties of null (reading 'submit') javascript로 form에 연결(action : post) 해서 컨트롤러로 연결하려고 했는데 이러한 오류가 생겼다 function chk_form() { document.getElementById('#updateForm').submit(); } 알고보니 여기서 오류가 생긴것이었다 getElementById에는 #이 들어가 있으면 안된다 function chk_form() { document.getElementById('updateForm').submit(); } 이렇게 변경해서 실행해보니 컨트롤러랑 연결이 되었다