반응형 분류 전체보기1062 C++ - 옵저버 패턴 (Observer Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 옵저버 패턴 (Observer Pattern) - 행동 패턴 - 객체 간의 일대다 종속성을 정의하는 패턴 - 객체의 상태가 변경될 때, 해당 객체에 종속된 다른 객체들이 자동으로 알림을 받아 갱신하도록 한다. 구현 - 주제(Subject) 객체는 옵저버들을 관리하고 상태의 변경을 감지하고, 옵저버들에게 알림을 보낸다. - 옵저버(Observer) 객체는 주제의 상태 변경을 감지하고 처리한다. - 주제와 옵저버 클래스를 추상화하여 각각의 기본 동작을 정의하고 구체적인 클래스를 구현한다. 장점 - OCP(개방-폐쇄 원칙), 기존 코드를 변경하지 않고 새로운 주제나 옵저버를 추가할 수 있다. - 주제와 옵저버의 관계가 느슨.. 2024. 1. 30. C++ - 전략, 스트래티지 패턴 (Strategy Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고- 클래스 다이어그램 그리기- 인터페이스 vs 추상 클래스 (Java, C++ 비교)- 스마트 포인터 : unique_ptr 전략, 스트래티지 패턴 (Strategy Pattern) - 행동 패턴- 알고리즘을 캡슐화하여 동적으로 교체할 수 있도록 하는 패턴- 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. 구현- 전략 패턴에서 사용할 각 알고리즘에 대한 인터페이스를 정의 (전략 인터페이스, Strategy Interface)- 정의된 인터페이스를 구현하여 알고리즘을 구체화하는 전략 클래스 작성 (구체적인 전략, Concrete Strategies)- 컨텍스트 클래스에 전략 객체를 사용하여.. 2024. 1. 29. 리액트 - html2pdf로 PDF 다운로드하기 리액트 전체 링크 참고 - Toast UI로 에디터 만들기 리액트에서 HTML의 요소(Toast UI Editor Viewer)를 .pdf로 다운로드 받아 보자. 링크에서 실제로 에디터를 편집하고 다운로드 받아볼 수 있다. 여기서는 html2pdf.js를 사용한다. npm install html2pdf.js --legacy-peer-deps 구현 다운로드하고 싶은 영역을 아래와 같이 id로 추가한다. (pdf-download) 버튼을 추가해 아래 메서드를 실행하면 원하는 요소를 pdf로 다운로드 받을 수 있다. 옵션은 아래 내용을 참고하자. const downloadPDF = () => { const element = document.getElementById("pdf-download"); // PDF로.. 2024. 1. 28. 깃허브 머메이드 - 클래스 다이어그램 그리기 (Draw Class Diagram using GitHub Mermaid) 깃허브 데스크탑으로 프로젝트 관리하기 강의 오픈!! (인프런 바로가기) Git / GitHub 전체 링크 참고- https://mermaid.js.org/syntax/classDiagram.html- 클래스 다이어그램 깃허브 머메이드를 이용해 클래스 다이어그램을 그려보자. 비주얼 스튜디오 코드에서 mermaid를 검색하면 Preview 플러그인을 다운 받을 수 있다. 플러그인을 설치하면 아래와 같이 클래스 다이어그램을 미리볼 수 있다.클래스 다이어그램 화살표 머메이드에서 아래 코드를 작성해보자.```mermaid---title: Class Diagram example--- classDiagram classA 클래스의 관계는 다이어그램에서 아래와 같이 화살표로 정의된다. (레퍼런스마다 모양이 .. 2024. 1. 27. 자바스크립트 - HTML 태그를 제거하고 텍스트만 추출하기 (Remove HTML Tags and Extract Text) 자바스크립트 전체 링크 참고 - 네이버 스마트 에디터 - Toast UI로 에디터 만들기 (React Editor with Toast Editor 3.0) 네이버 스마트 에디터의 기능 중 하나인 TEXT 추출 기능을 자바스크립트로 구현해 보자. Toast UI Editor에서는 제공하지 않기 때문에 직접 구현해야 한다. 위의 Editor에서 설정한 HTML 태그는 아래와 같다. 깨가 죽으면? 주근깨토끼가 쓰는 빗은? 래빗세상에서 가장 쉬운 숫자는? 190,000 비가 1시간 동안 내리면? 추적 60분 바늘만 가지고 다니는 사람은? 실 없는 사람콩 한알은 영어로? 원빈햄버거는의 색깔은? 버건디 토끼가 강한 이유는? 깡과 총이 있어서 해당 기능을 구현한 메서드는 다음과 같다. const extractText.. 2024. 1. 26. C++ - 싱글턴 패턴 (Singleton Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - call_once로 함수를 한 번만 호출하기 - atomic으로 원자적 연산 처리하기 (vs mutex) 싱글턴 패턴 (Singleton Pattern) - 생성 패턴 - 특정 클래스에 대해 객체 인스턴스가 하나만 만들어지도록 하고, 전역 접근을 제공하는 패턴 - 전역 변수에 객체를 대입하면 Application이 시작되고 종료되기까지 자원을 차지하지만, 싱글턴 패턴은 필요할 때만 객체를 만들 수 있다. - 실제로 객체가 필요하면 인스턴스를 직접 만들지 않고, 인스턴스를 요청하도록 구현한다. (getInstance) 구현 - 다른 객체에서 new 연산자를 사용하지 못하도록 생성자를 private으로 정의 - .. 2024. 1. 26. 아키텍처 & 디자인 패턴 용어 정리 Architecture & Design Pattern 전체 링크 오브젝트 (Object)- 데이터와 그 데이터를 처리하는 메서드의 조합으로 이루어진 소프트웨어의 기본 단위- State(attributes)와 Behavior(operations)을 가진다.- 클래스는 객체를 생성하기 위한 템플릿(Abstract Definition)이며, 객체는 클래스의 인스턴스다. 인스턴스 (Instance)- 객체지향 프로그래밍에서 클래스를 기반으로 생성된 실체- 클래스는 객체를 만들기 위한 템플릿이며, 이 템플릿을 기반으로 생성되는 것이 인스턴스 객체지향 분석 (OOA, Object-oriented Analysis)- 도메인을 이해하고, 시스템이 가져야 할 요구사항을 식별하고 분석하는 단계 (Use Case Diagr.. 2024. 1. 26. C++ - atomic으로 원자적 연산 처리하기 (vs mutex) C, C++ 전체 링크 원자성 (Atomicity) - 연산이 도중에 중단되지 않고 전체가 완료되거나 전혀 수행되지 않는 것 - 원자성이 지켜져야 멀티스레드 환경에서 데이터의 일관성을 유지하고 동시성 문제를 해결할 수 있다. 다음 코드를 실행해 보자. #include #include using namespace std; int counter; void incrementCounter() { for (int i = 0; i < 1000000; i++) counter++; } int main() { thread t1(incrementCounter); thread t2(incrementCounter); t1.join(); t2.join(); cout 2024. 1. 26. C++ - call_once로 함수를 한 번만 호출하기 C, C++ 전체 링크 test 함수는 처음 호출 되는 경우에만 init을 수행한다. #include using namespace std; bool first; void test() { if (first == false) { first = true; cout 2024. 1. 24. 이전 1 ··· 18 19 20 21 22 23 24 ··· 118 다음 반응형