분류 전체보기43 디자인패턴 시리즈 1. 전략 패턴 (Strategy Pattern) 전략 패턴 (Strategy Pattern) 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 사용할 수 있게 해준다. 코드에 적용해보기 이론만 보면 도대체 무슨 소리인지 모르겠는 게 디자인 패턴이다. 나의 경우 예시를 들어 천천히 코드에 적용해보면서 이해를 하는 게 훨씬 빨랐다. 지금부터 배구 게임을 만드는 프로그램을 작성할 것이다. 표준 객체지향 기법을 사용하여 Player라는 슈퍼클래스를 만든 후에 이 클래스를 확장하여 여러 종류의 플레이어를 만들 계획이다. public abstract class Player { public void defence() { System.out.println("수비를 했습니다!"); } abstract public void attack(); } public .. 2023. 1. 11. SOLID 원칙 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙) 객체지향 5대 원칙이라고 불리는 SOLID Principles은 Single Responsiblity Principle, Open-Closed Principle, Liskov Substitution Principle, Dependency Inversion Principle, Interface Segregation Principle으로 이루어져있다. 유지 보수와 확장이 쉬운 프로그램을 설계하기 위해 앞선 원칙들을 적용한다. 즉, 이 다섯가지 원칙을 적용한다면 객체지향 프로그래밍을 하게 되는 것이다. Single Responsiblity Principle (단일 책임 원칙) 책임이란 단어가 다소 추상적으로 느껴질 수 있지만 '기능'이라고 보면 된다. 함수, 클래스 등은 단 하나의 책임을 가져야 한다는 원칙이.. 2023. 1. 3. 2022 회고 : 인생 첫 회고이자 개발자로서의 첫 회고 다이어리를 한번도 끝까지 써본 적 없지만, 살면서 회고라는 걸 해본 적이 없지만 2022년을 보내며 첫 회고를 써보려고 한다. 대학교를 졸업하고, 오랫동안 계획했던 교육 과정을 수강하고, 처음으로 인턴이라는 걸 해보고 마지막 달인 12월에 취업을 했다. 큼지막한 일들이 많았던 한해였던 것 같다. 2022년을 시작하며 가장 큰 목표로 잡았던 개발자로 취업하기를 이루었다. 막연하게 당연히 할 수 있다고 생각했는데 과정을 다시 돌아보면 당연하지 않았다. 약 8개월 간의 교육 한달 간의 인턴을 하며 꾸준하고 치열하게 노력했다. 그 과정이 마냥 행복하지만은 않았다. 과거의 선택을 후회하기도 하고, 잘 가고 있는지에 대해 의심도 들었다. 끝까지 동력을 잃지 않고 나아갈 수 있었던 이유에는 같은 길을 가고있는 동료들.. 2022. 12. 31. Mysql JSON 형태로 조회하기 * 2022년 9월 16일 velog에 작성했던 게시글을 옮겨온 글입니다. 일대다 관계를 갖는 데이터 테이블 형태는 아주 흔하게 볼 수 있다. 웹 서비스의 가장 간단하고 기본적인 형태인 게시판을 예로 들면 한명의 사용자는 여러 게시글을 작성할 수 있다. 반대로 한개의 게시글은 여러명이 작성자가 될 수는 없다. 이것이 바로 onetomany 형태의 관계이다. 만약 사용자가 내가 쓴 글을 보려고 마이페이지에 들어가 내가 쓴 글을 조회한다면 우리는 어떻게 데이터를 넘겨줘야 할까. 보통 데이터를 주고 받을 때 Json, xml 형태로 가장 많이 자료를 넘긴다. 애초에 둘 다 데이터를 저장하고 전달하기 위해 만들어진 형태이기 때문이다. 또한 계층적인 데이터 구조를 가지기 때문에 한번에 얽혀있는 정보들을 표현할 수.. 2022. 12. 31. 데이터를 운반하는 트럭 Packet Node.js, typeORM, Mysql을 사용하는 프로젝트를 할 때 SELECT 쿼리문을 이용하여 데이터를 조회했더니 다음과 같은 형태의 결과를 얻을 수 있었다. [ RowDataPacket { id: 1, quantity: 1 }, RowDataPacket { id: 2, quantity: 10 } ] RowDataPacket 그리고 객체의 형태로 원하는 데이터들이 나열된 배열이 출력되었다. 이때까진 세세한 개념까지 깊이 공부할 여유가 없어서 데이터를 담아주는 바구니같은 개념이겠거니 하고 넘어갔었다. Packet에 대해 글을 작성하게된 계기는 DELETE 쿼리문의 에러 핸들링 과정에서 발생했다. bookings(예약) 테이블에 실제로 존재하지 않는 class_id와 user_id의 조합이라면 당연히.. 2022. 12. 31. Node.js 카카오 로그인 및 DB INSERT 총정리 * 2022년 9월 16일 velog에 작성했던 게시글을 옮겨온 글입니다. 소셜 로그인, 그중에서도 카카오 로그인을 구현하기로 마음을 먹고 공식 문서를 펼쳤다. 처음엔 이해가 잘 안되는 게 당연하다고 생각하며 두세 번을 더 읽어봤지만 어떤 부분을 프론트엔드가 처리하고 어떤 부분을 백엔드가 처리해야 하는 건지 감이 오지 않았다. 일단 공식 문서는 덮어두고 구글링을 해봤지만 현 상황에 필요한 설명은 없었다. 그래서 카카오 로그인을 성공하고 나면 반드시 블로그에 정리하여 공유하겠다고 다짐했다. 답은 공식 문서에 다 있다. 정말 진부하지만 당연하게도 API를 배포한 사람들이 만든 공식 문서에 답이 다 있다. 이해하기 전까진 대체 무슨 소리인가 싶었지만 공식 문서만큼 친절한 자료도 없다. 그렇지만 외부 API 자.. 2022. 12. 31. 이전 1 2 3 4 5 6 7 8 다음