2021/07 8

[객체지향] 3. POJO JAVA

0. POJO? Plain Old Java Object 다들 한번쯤 다들 한번쯤 들어본 단어이실 겁니다. POJO를 있는 그대로 해석해보면, '순수한 오래된 자바 객체' 정도로 해석할 수 있는데요. 이보다 더 자세히 이해하기 위해서 잠시POJO라는 개념이 등장하게 된 배경을 살펴봅시다. 1. 배경 예전에 많이 사용했던 백엔드 기술 중 EJB라는 기술이 있습니다. 엔터프라이즈급 서버 시스템 개발시 유용한 업무로직이 포함되어있어서 EJB에만 존재하는 클래스를 사용하여 개발된 시스템이 많았다고 하는데요. 하지만 시간이 지나 새로운 기술, 프레임워크들이 등장하며 시스템을 이식해야할 경우가 생겼다고 합니다. 이때, EJB에만 존재하는 클래스를 사용한 부분의 이식의 어려움이 있었고, 이러한 사례들 때..

Java 2021.07.27

[객체지향] 2. 객체지향 설계 5원칙 (SOLID)

0. 압도적 감사...! SOLID 원칙 이라고도 불리는, 객체지향 설계 5원칙은 선배 개발자분들의 시행착오와 고민들로 만들어진 객체지향 설계 가이드라인 입니다. 후배 개발자들이 자신들과 같은 고민을 하여 시간을 낭비하지 않도록 열심히 고민해주신 선배 개발자 분들에게 감사하며, 객체지향 설계 5원칙에 대해 알아봅시다. 1. S - 단일책임원칙 SRP (Single Responsibility Principle) 모든 클래스는 하나의 책임만 가져야 하고, 클래스는 그 책임을 완전히 캡슐화 해야한다는 원칙입니다. 자동차 클래스 (다중 책임) class 자동차 { public void 시동을건다(type) { if (type=="저가형") { this.is엔진동작 = true; } else if (type="고..

Java 2021.07.25

[객체지향] 1. 객체지향

요즘 주로 사용되는 다양한 언어, 프레임워크들은 객체지향 프로그래밍을 지향합니다. 대표적으로 Java-Spring, Python-django, PHP-Laravel 등 다수의 프레임워크들은 객체지향을 기반으로 만들어져있습니다. 심지어 함수형 프로그래밍을 지향하는 Node.js 에서도 상황에 따라 class 사용을 통한 부분적 객체지향을 권장하기도 합니다. 1. 객체지향이란? 모든 사물과 개념을 객체로 정의하여 개발하는 방식 입니다. 모든 객체는 행위와 속성을 가진다는 개념을 바탕으로, 객체를 설계할때는 실제 사물을 기반으로 설계를 합니다. 자동자 객체 속성 : 차종, 현재기어, 속도 ... 행위 : 시동을건다, 속도를높인다, 속도를줄인다, 시동을끈다 ... 그리고 캡슐화, 상속, 다형성, 추상화 등의 특..

Java 2021.07.24

[링크] 견고한 nodejs 프로젝트 설계하기

어떤 언어든 프로젝트를 시작하려고 하면, 어떤 구조가 좋은 구조인가 스스로 고민하게된다. 하지만, 혼자 열심히 고민해서 구조를 설계해도, 개발하다보면 부족한점이 끊임없이 드러난다. 혼자 고민하며 얻는것들도 많겠지만, 그 시간이 너무 길어지지 않도록 해야한다고 생각한다. 특히 설계는 지식 + 경험이라고 생각한다. 그래서 내가 알고있고 경험해본것 이상의 좋은 설계를 혼자 도출하는것은 매우 어렵다고 생각한다. 안그래도 공부할 것들이 많은데 고민을 너무 비효율적으로 하지말자. https://velog.io/@hopsprings2/견고한-node.js-프로젝트-아키텍쳐-설계하기 [견고한 node.js 프로젝트 설계하기 본 글은 Sam Quinn의 “Bulletproof node.js project architec..

NodeJS 2021.07.23

REST API 설계 가이드

1. URL 작성시 지켜야할 사항 URL 작성시 아래 규칙을 준수하여 작성하자. 1) _(Underbar) 대신에 -(dash)사용하기 /blog_post (X) /blog-post (O) 2) 소문자 사용하기 /Blog-Post (X) /blog-post (O) 3) 가급적 명사를 사용하기 /blog_posting (X) /blog-post (O) 4) 마지막에 / 로 끝나지 않게 하기 /blog_post/ (X) /blog-post (O) 2. 기본적인 HTTP Method 제공하기 /post /post/{post_id} GET 전체 글 목록 조회 특정 글 조회 POST 405 ERR 특정 글 추가 PUT 405 ERR 특정 글 수정 DELETE 복수 글 삭제 처리 특정 글 삭제 처리 /post는 P..

이것저것 2021.07.23

[Docker] Docker로 Node.js 개발환경 세팅하기(feat. M1 Macbook)

윈도우 노트북을 사용할때는 이것 저것 설치하고, workspace 디렉토리만 분리하여 사용했었습니다. 이렇게 사용하다보니 여러 문제점에 직면했었습니다. 1. 다양한 Runtime설치로 인해 PC가 혼잡해짐(Java, PHP, Python, Node.js 등등..) 2. 패키지 매니저가 전역으로 설치한 패키지 관리가 힘듦(pip 네 이녀석...) 3. 개발환경 이식의 어려움 하지만, 최근에 맥북을 사용하게되니 이전처럼 막 굴리고 싶지 않았습니다.(맥북은 소중하니까요) 그래서 Docker로 개발 Runtime을 만들고, 이 환경에서 개발해보려 합니다. 게다가 배포서버와 흡사한 환경에서 개발하며 배포환경 검증도 되니 시도해볼 이유는 충분하겠죠? 0. 준비할 사항 Visual Studio Code Docker ..

인프라/Docker 2021.07.22