코딩공부 147

SOLID 원칙: 객체 지향 프로그래밍의 다섯 가지 핵심 원칙

단일 책임 원칙 (Single Responsibility Principle, SRP)개념: 하나의 클래스는 하나의 책임만 가져야 한다.쉬운 설명: 각 부품은 한 가지 일만 잘하면 된다.일상 예시: 주방에서 칼은 자르는 일만, 냄비는 음식을 담아 조리하는 일만 합니다. 칼에 음식을 담아 끓이려 하거나, 냄비로 음식을 자르려 하지 않죠. 각자의 역할에 충실한 것이 단일 책임 원칙과 비슷합니다.개방-폐쇄 원칙 (Open-Closed Principle, OCP)개념: 소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.쉬운 설명: 기존 코드를 건드리지 않고도 새로운 기능을 추가할 수 있어야 한다.일상 예시: 스마트폰을 생각해보세요. 새로운 앱을 설치할 때 휴대폰의..

객체지향과 추상화 수준

서론객체지향 프로그래밍에서 '추상화 수준'은 코드의 가독성과 유지보수성을 크게 향상시킬 수 있는 중요한 개념입니다. 이 글에서는 추상화 수준이 무엇인지, 왜 중요한지, 그리고 어떻게 적용할 수 있는지 살펴보겠습니다. 객체지향 프로그래밍 객체지향 프로그래밍(OOP)은 소프트웨어 개발의 주요 패러다임 중 하나로, 프로그램을 객체들의 모임으로 구조화하는 프로그래밍 방식입니다. 이 방식은 실제 세계를 모델링하여 소프트웨어를 설계하고 구현하는 데 효과적입니다. 객체지향의 핵심 개념a) 객체(Object): 데이터와 그 데이터를 조작하는 메서드를 하나의 단위로 묶은 것.b) 클래스(Class): 객체를 생성하기 위한 템플릿 또는 청사진.c) 캡슐화(Encapsulation): 객체의 내부 구현을 숨기고 외부에서는 ..

데이터베이스 인덱스(Index)의 이해와 활용

인덱스란 무엇인가?인덱스는 데이터베이스에서 검색 속도를 향상시키기 위해 사용되는 자료 구조입니다. 책의 찾아보기와 유사한 역할을 하며, 원하는 정보를 빠르게 찾을 수 있게 해줍니다.예를 들어, 도서관에서 책을 찾는 상황을 생각해 봅시다. 인덱스가 없다면 모든 책장을 일일이 살펴봐야 하지만, 도서 분류 시스템(인덱스)이 있다면 원하는 책의 위치를 빠르게 찾을 수 있습니다. 인덱스의 작동 원리인덱스는 주로 B-tree(Balanced Tree) 구조를 사용합니다. B-tree의 주요 특징은 다음과 같습니다:a) 균형 트리: 모든 리프 노드가 같은 레벨에 있어 검색 성능이 일정합니다.b) 탐색 트리: 항상 정렬된 상태를 유지하여 빠른 검색이 가능합니다.c) 다중 데이터 저장: 하나의 노드에 여러 데이터를 저장..

도커(Docker)와 쿠버네티스(Kubernetes)의 개념

[ 공부배경 ]개발 공부를 시작하고, 내일배움캠프 끝자락쯤에 도커라는 단어를 들어봤다.최종프로젝트로 바빠서 뭐하는 기술이지? 궁금해했지만새로운 기술보다는 프로젝트 마무리가 더 급했다.이후 프로젝트도 끝나고, 이력서 수백개씩 넣고 취업을 했고 1년이 지났다.이제 이직준비를 하면서 많은 회사에서 도커와 쿠버네티스 경험을 필요로 한다는 것을 보고 궁금해졌다.가볍게 유뷰트를 보고 정리해보려고 한다. 0. 요약 1. 서버와 컨테이너의 개념컨테이너는 일종의 서버로, 프로그램 소프트웨어가 실행되는 장소이다.서버는 단순히 하드웨어를 의미하며, 컴퓨터와 유사한 개념으로 이해하면 된다.모든 회사는 IT 서비스를 제공하기 위해 소프트웨어를 운영한다.개발자는 자신의 PC에서 소스 코드를 작성하고, 이를 테스트하기 위해 임시 ..

나만의 클린코드 요약

1. 검색 가능한 이름을 사용하기 (Use a searchable name.) 2. 함수명은 반드시 동사로. 함수는 동작 하나만. 3. 함수의 인수는 3개이하 적당. 많을 경우에는 Object로 정리해서 param 사용. 4. 함수의 파리미터에 boolean 을 둬서 액션 2개 이상을 구현하기 보다는, 함수를 2개로 구분하는 것을 추천. 5. 변수명은 너무 축약하지 말것. 이해할 수 있는 변수명으로~! [주의] 문제 해결하려는 코딩 초반부에는 우선 동작에 초점 맞춰서 작업~! 그 후에 깔끔하게 코딩 정리(5개 팁 참고)하는 것을 추천~!

코딩공부 2023.11.01

Part 1. 전산기초

좋은 코드란 무엇인가? ‘좋은 코드’의 기준이 조금씩 다르고 각각의 경험을 기반으로 좋은 코드를 정의하고 있다. 세간에 좋은 코드의 정의는 정말 많다. 읽기 쉬운 코드 중복이 없는 코드 테스트가 용이한 코드 결론은? 좋은 코드를 왜 작성해야 하는지부터 고민했던 과정을 글로 정리해보았다. 코드 간의 의존성을 고민하자. 합의된 규칙으로 일관성있게 작성하자. 적절하게 확장 가능하도록 설계하자. 어쩔 수 없는 코드는 주석과 함께 격리하자. 답은 테스트 코드 기반의 자동화 테스트다. 객체지향 프로그래밍 (OOP) 객체 지향적 설계 원칙 SRP(Single Responsibility Principle) : 단일 책임 원칙클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유이어야 한다. O..

[7회] Call by value vs Call by reference / DDD vs MSA

1. Call by value와 Call by reference에 대해 설명해주세요. 자바스크립트에서는 원시 타입(primitive type)의 값은 call by value(값에 의한 호출)로 전달되고, 객체 타입(object type)은 call by reference(참조에 의한 호출)로 전달됩니다. Call by value는 변수에 저장된 값을 복사해서 전달하는 방식입니다. 이 방식에서는 변수의 복사본이 전달되므로 함수 내부에서 전달 받은 값을 변경해도 원래 변수의 값은 변경되지 않습니다. 반면에 call by reference는 변수 자체가 전달됩니다. 이 방식에서는 해당 변수의 주소를 전달하므로 함수 내부에서 전달 받은 값을 변경하면 원래 변수의 값도 변경됩니다. Call by value는 변..

[26회 - 데일리과제] Nest.js 라이프사이클

1. Nest.js 라이프사이클에 대해 설명해주세요. 💘 NestJS는 Node.js를 위한 프레임워크로, 서버 사이드 애플리케이션 개발을 위해 사용됩니다. 기본적인 순서는 다음과 같습니다. Middleware => Guards => Pre-Interceptors => Pipes => Controller => Service => Post-Interceptors => ExceptionFilter => Response 1. Middleware 전역으로 바인딩 되어있는 미들웨어를 가장먼저 실행 합니다. (main.ts 에 app.use로 바인딩 되어있는 미들웨어들) Express와 비슷한 방식으로 바인딩 된 순서대로 순차적으로 실행 됩니다. 2. Guards 사용자의 권한을 체크하는 로직이 들어간다 예를들어 ..

[6회] 자료구조 & 알고리즘 / 주소창에 “www.google.com” 쳤을때 일어나는 일

1. 자료구조 및 알고리즘 개념에 대해 설명해주세요. 자료구조는 데이터를 저장하고 관리하는 방법입니다. 궁극적인 목표는 데이터를 빠르고 안정적으로 처리하는 것입니다. 알고리즘은 어떠한 문제를 해결하기 위해 정해진 절차로 특정 문제를 효율적이고 빠르게 해결하는 것을 목표로 합니다. 🔥꼬리질문🔥 2. 주소창에 “www.google.com” 쳤을때 일어나는 일을 설명해주세요. 첫째 DNS 조회를 합니다.입력받은 주소를 DNS서버에 보내 해당 도메인 IP주소로 변환합니다. 둘째 서버 연결을 합니다. 받은 IP주소로 해당 서버에 연결을 시도합니다. 셋째 서버에 HTTP요청을 합니다. 넷째 서버는 요청받은 값에 대한 응답을 생성합니다. 다섯째 응답받은 값을 렌더링합니다. 여섯째 렌더링 된 값을 웹페이지에 표시합니다..

[5회] TypeORM & Query builder / JWT & 세션 & 쿠키

1. TypeORM 및 Query builder 개념에 대해 설명해주세요. TypeORM은 Node.js에서 관계형 데이터베이스를 사용하는 데 사용되는 ORM입니다. ORM은 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 매핑을 제공하는 소프트웨어 도구입니다. Query Builder는 TypeORM의 기능 중 하나로 SQL 쿼리에 대한 깊은 이해없이 데이터베이스에 대한 복잡한 쿼리를 작성할 수 있습니다. 🔥꼬리질문🔥 N+1 문제는 데이터베이스 쿼리 성능 문제로, 1번의 쿼리로 N건의 데이터를 가져왔는데, 관련 컬럼을 얻기 위해 쿼리를 N번 추가로 수행하는 문제를 말합니다. 이 문제는 쿼리결과 건수마다 참조 정보를 얻기 위해 건수만큼 반복해서 쿼리를 수행하..