아이템 18 : 상속보다는 컴포지션을 사용하라 상속 vs 컴포지션 여기서의 상속은 클래스가 다른 클래스를 확장하는 구현 상속을 의미. 인터페이스가 다른 인터페이스를 확장하는 인터페이스 상속과는 무관하다. 상속은 한 클래스를 다른 클래스에서 derive 즉 파생 시킨다. ex) extend 받은 확장된 클래스가 파생됨 컴포지션은 parts 즉 클래스를 구성하는 부분의 합으로 정의한다 ex) 클래스 필드 내에 private or public 필드로 클래스의 인스턴스를 참조하게 하고해당 클래스를 구성하는 부분의 합으로 정의됨.클래스의 구성요소로 쓰인다는 뜻에서 composition이라고 한다. 상속이 위험한 이유 : 상위 클래스 또는 슈퍼 클래스의 릴리스마다 내부 구현이 달라질 수 있고, 이에 따라 하위 클래..
토이 프로젝트를 만들더라도, 파일 계층은 여러개로 나뉠 수 밖에 없는데, 사용자가 만든 파일을 import 하는 것은 당연히 필요한 일이다. golang에서 사용자 패키지를 import하는 방법을 배워보자. 폴더 계층 main 파일과 같은 계층에 폴더를 생성하고, 그 하위에 import하고자 하는 파일을 생성한다. ex) module ├─ main.go │ ├─ ioView │ └─ ioView.go 패키지와 메서드 작성 해당 파일(ioView.go)의 최상단에 package 이름을 적어준다. 주의사항: 패키지는 반드시 소문자로 작성되어야 한다. (파일명과 폴더 명은 상관없다.) + 내보내고자 하는 함수(export)는 반드시 대문자로 시작해야한다. ex) import하는 패키지에 작성된 함수라도, 소문..
ERD 생성 먼저 새 ERD를 만들고 테이블을 하나 생성하면 다음과 같은 초기화면이 생긴다. 위의 두개의 title에는 왼쪽은 논리적이름을, 오른쪽은 물리적이름을 적어준다. 논리적 이름 : 내가 알아보기 위한 이름 물리적 이름 : 실제 데이터베이스에 저장되는 테이블 이름 왼쪽 노란색 버튼은 PK attribute를 추가하고, 파란색 버튼은 일반 attribute를 추가한다. row를 클릭하고, 오른쪽 i 버튼을 누르면 값을 편리하게 수정할 수도 있다. 노출되는 속성 선택 테이블에서 어떤 속성을 보여줄지는 오른쪽 위 톱니바퀴 모양 아이콘을 누르면 다음과 같은 화면에서 설정할 수있다. Display가 화면에서 보여지는 테이블의 속성을 선택하는 곳이고, share가 다른 사용자와 동시 작업을 할지를 선택하는 ..
Puppeteer 특징 페이지의 스크린 샷과 PDF를 생성 SPA (Single Page Application)를 크롤링하고 사전 렌더링 된 내용 (즉, “SSR”(Server-Side Rendering))을 생성 Form 테스트, UI 테스트, 키보드 입력 등 자동화 최신 JavaScript 및 브라우저 기능을 사용하여 테스트 사이트 의 타임 라인 추적 을 캡처하여 성능 문제를 진단 Chrome 확장 프로그램을 테스트 브라우저 상의 콘솔 로그, Network응답, 실패 등 모니터링 가능 단일 페이지 애플리케이션(SPA) 이해 SPA는 단일 HTML 페이지를 로드하고 사용자가 상호 작용할 때 콘텐츠를 동적으로 업데이트하는 웹 애플리케이션이다. 이는 일반적으로 React, Angular 또는 Vue.js와..
상태를 보면 다음과 같이 도커는 문제없이 active 상태이지만, 빌드에 실패할 때가 있다. $ sudo systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2024-01-23 11:51:01 KST; 1min 6s ago Docs: https://docs.docker.com Main PID: 25391 (dockerd) Tasks: 10 CGroup: /system.slice/docker.service ..
본 포스트는 Docker에 대해 더 이해하기 위한 글입니다. 개요 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 서비스 관리자는 도커라이징(Dockerizing) 된 컨테이너가 어떤 런타임을 필요로 하는지, 어떤 라이브러리와 코드를 필요로 하는지 전혀 알 필요가 없다. 다시 말해, 도커를 사용하면 OS 환경설정, 언어, 라이브러리, 시스템 도구 등이 설치된 환경을 그대로 이미지로 빌드할 수 있다. 그저 컨테이너를 어딘가에서 가져와서 서비스를 운영할 컴퓨팅 환경에서 실행하기만 하면 된다. 실행된 서비스는 컴퓨팅 환경과 독립된 가상의 환경에서 실행되며, 일관된 결과를 보장한다. Docker는 VS Virtual machine 혼동하기 쉽지만, Docker는 virtual machine과는 아예 다른 개..
개발환경 linux ubuntu 20.04 문제 상황 postgre 서버를 실행하고, psql로 접속을 시도하자 다음과 같은 에러가 발생했다. psql: error: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 포트 개방 여부 확인 그래서 먼저 다음 명령어로 포트가 열렸는지를 확인했는데, 포트도 열려있지 않았다. (포트 설정은 /var/lib/postgresql/{version}/main/postgresql.conf 에서 확인가능) sudo lsof..
가끔가다 docker rm이나 docker stop 같은 명령어들이 먹통이 될때가 있다. rm 같은 경우는 docker rm -f 등의 명령어로 해결될 때가 있으나, docker stop같은 경우는 그냥 docker service를 재시작하는 것이 건강에 이롭다. systemctl restart docker 단, 재시작 시 실행 중인 컨테이너들이 종료되어 docker ps -a에서 확인할 수 있다. 그 중 항시 실행시켜줘야 하는 컨테이너들은 다시 docker start로 실행 시켜주자. reference https://stackoverflow.com/questions/70434777/cannot-kill-container-container-id-tried-to-kill-container-but-did-n..