괴발개발 성장기
반응형

Study 140

[디자인패턴] 팩토리 메소드 패턴(Factory Method Pattern)

# 정의 객체 생성을 서브클래스에 위임하여 객체 생성과 사용을 분리하는 디자인 패턴 # 장점 1) 개방-폐쇄 원칙(OCP) 적용된다. 기존의 코드를 변경하지 않고 새로운 기능을 확장할 수 있다. 이렇게 개발하면 Product와 Concrete가 느슨하게 결합한다. 2) 결합도가 낮아진다. 3) 코드는 간결해지고 기존 코드가 복잡해지지 않는다. # 단점 1) 각자의 역할을 나누다 보면 클래스가 늘어나는 게 단점이다. # 예시 // Ship 인터페이스 type Ship interface { // 공통 동작을 정의 Color() string } type WhiteShip struct{} func (c WhiteShip) Color() string { return "color : white" } type Blo..

[디자인패턴] 싱글톤

# 싱글톤 개념 객체의 인스턴스를 한개만 생성되는 패턴 # 목적 1) 어떤 클래스에 오직 하나의 인스턴스만 존재 2) 하나만 존재하는 인스턴스에 전역(global) 접근 방법 제공 # 예시 게임의 설정 => 오직 하나만 존재한다. # 기본적으로 싱글톤 예시 - sync.Once를 사용하여 한 번만 인스턴스를 생성하도록 보장한다. - 기화 코드나 설정 코드를 안전하게 관리할 때 유용하게 사용 - 싱글톤 인스턴스의 초기화를 보장 type singletonByBasic struct { data string } var ( once sync.Once instanceByBasic *singletonByBasic ) func getInstanceByBasic() *singletonByBasic { once.Do(fu..

[디자인패턴] 시작

# 동기 개발자로서 알아야 할 내용으로 알고 있었다. golang으로 접하기 어렵고 자바로 된 예시가 많아서 그동안 외면하고 있었다. 문득 한번 제대로 공부해보자라는 생각이 들었다. 그래서 강의를 들으면서 챗GPT에 도움을 받아서 진행할 예정이다. # 목표 싱글톤 팩토리 메소드 프록시 패턴 이터레이터 패턴 옵저버 패턴 전략 패턴 무조건 6개의 패턴을 먼저 하고 그다음에 나머지 패턴을 해보자! 6개는 무조건 하기!! # 참조 자료 https://github.com/tmrts/go-patterns GitHub - tmrts/go-patterns: Curated list of Go design patterns, recipes and idioms Curated list of Go design patterns, ..

[React] 파일 사이즈가 크면 에러 메시지 띄우기

# 배경 회사에서 이미지 사이즈와 파일 사이즈에 제한을 두려고 했다. 백엔드에서도 제한을 뒀지만 API 호출하기 전에도 제한을 주려고 했다. # 내용 나는 1MB 이상 이미지 파일이면 에러 메시지를 띄웠다. const IMAGE_MAX_SIZE = 1 * 1024 * 1024; 만약 10MB로 하고 싶으면 1를 10으로 변경하면 된다. # 코드 const IMAGE_MAX_SIZE = 1 * 1024 * 1024; const FileStudy = () => { const [ imgErrMessage ,setImgErrMessage] = useState("이미지를 넣어주세요") return ( { if (e.target.files[0]) { e.target.files[0].size > IMAGE_MAX_S..

Study/React 2023.08.09

[MySQL] DB 용량 체크하는 쿼리

# 배경 입사 초기에 어떤 테이블마다 사이즈가 얼마나 되는지 알아보는 시간을 가졌다. # 문법 SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES WHERE TABLE_SCHEMA = "스키마이름" AND TABLE_NAME = "테이블명" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC; # 예시 SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_sche..

Study/Mysql 2023.08.08

[MySQL] 조인 해서 업데이트 시키기

# 배경 기부, 기부상태, 기부영수증 3개의 테이블을 조인해서 기부날짜 보고 기부영수증 상태 업데이트 하기 # donations 테이블 id member_id donation_date status deleted_at 회원아이디 기부날짜 기부상태 # statuses 테이블 id status receipt_available 기부상태 기부영수증가능 # donor_receipts 테이블 donation_id status 기부영수증상태 # 문법 update [테이블명1] a inner join [테이블명2] b on a.[조인된컬럼] = b.[조인된컬럼] set b.[컬럼명] = 변경할값 WHERE 조건; # 예시 UPDATE donor_receipts INNER JOIN donations on donor_rec..

Study/Mysql 2023.08.03

[Golang] Xorm에 AllCols() 이걸 사용할 때 bool 타입은 업데이트가 안된다.

# 배경 입사 초기에 데이터 Update를 하는데 다 바뀌는데 bool 타입의 값이 변경되지 않았다. 당시에는 경험도 지식도 없어서 해결하는데 많은 시간이 걸렸다. # 문제의 코드 _, err := common.GetDB(ctx).Where("id = ?", campaign.Id).AllCols().Update(campaign) AllCols() : 모든 컬럼을 업데이트 시켜준다. 그런데 bool 타입의 컬럼은 false 값만 된다. # 해결 방법 1) UseBool("컬럼명")을 적으면 bool 타입의 컬럼명을 작성한다. _, err := common.GetDB(ctx).Where("id = ?", campaign.Id).UseBool("컬럼명").AllCols().Update(campaign) 2) ..

Study/Go 언어 2023.08.02

[Error] no configuration file provided: not found 에러메시지

# 배경 docker compose up -d 위에 명령어를 치니까 에러 메시지 발생했다. # 에러 메시지 no configuration file provided: not found # 해결 docker compose up -d 이 명령어는 docker-compose.yml으로 정의한 컨테이너를 실행하는 명령어 이다. 그래서 docker-compose.yml 파일이 있는 곳에서 실행해야한다. 나는 XXX@XXX-MacBookAir ~ 여기에서 실행을 했다. (루트에서 실행) 그래서 docker-compose.yml 이 파일이 있는 폴더로 이동하여 실행을 하니까 명령어가 실행 되었다.

Study/Error 2023.08.01
반응형