괴발개발 성장기
반응형

분류 전체보기 220

[Error] 스웨거(Swagger)로 문서를 만들다가 나타난 에러 해결책

간단하게 스웨거 사용하려고 초기 작업을 하는 과정에서 에러가 발생했다. 설치를 다하고 코드도 다 썼는데 해당 주소에 접속을 하면 에러 발생한다. # 에러 메시지 Fetch error Internal Server Error doc.json # 해결방안 사용하지는 않지만 docs 디렉토리 경로를 적어주지 않으면 에러가 발생한다. 나는 study-service 디렉토리 안에 바로 docs 디렉터리가 있다. 사용하지 않지만 import 안에 있어야하니까 앞에 _ 표시를 해주면 된다. (go 언어 사용) import ( _ "[프로젝트명]/docs" ) 예시 import ( _ "study-service/docs" ) 그럼 에러를 해결할 수 있다.

Study/Error 2023.08.31

[디자인패턴] 프록시 패턴(Proxy Pattern)

프록시 패턴(Proxy Pattern) 어떤 객체의 대리자 역할을 하는 객체를 통해 해당 객체의 기능을 간접적으로 사용하는 디자인 패턴 원래 사용하려는 객체를 직접 사용하지 않고 대리인을 통해서 쓰는 패턴 클라이언트로 첫 요청을 받으면 프록시 받는 것이다. 예를 들으면 사장을 만나기 위해서는 비서를 거쳐서 가는 것과 비슷한 개념이다. # 장점 - 기존 코드는 수정하지 않고 새로운 기능을 추가한다 => 개방폐쇄의 원칙 - 기존 코드의 기능만 유지할 수 있다. - 보안을 강화시킬 수 있다. - 초기화 지연을 시킬 수 있다. => 최초로 사용할 때 만든다. - 캐싱하여 성능을 향상 - 특정 권한이나 조건에 맞는 경우 객체에 접근할 수 있다. # 단점 - 코드의 복잡성이 증가한다. # 예시 가상 프록시를 사용하..

[디자인패턴] 팩토리 메소드 패턴(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, ..

XORM 사용하는 이유와 통계 관련 SQL

# XORM 사용하는 이유 SQL문을 사용하지 않고 XORM을 사용하는 이유는 오류를 방지하기 때문이다. 복잡한 SQL문을 직접 쓰다 보면 오류 발생하는 경우가 종종 있다. 그러나 통계같은 건 SQL문을 직접 사용하는 것이 좋다. # XORM 사용한 SQL문 q := cocommon.GetDB(ctx).Table("popups"). Select("id, device_type,title,start_date,end_date,closed"). Where("1=1"). And("closed =?", false). And("display_page like '%" + enum.MAIN.String() + "%'"). Asc("order_by").Desc("start_date") 이렇게 사용한다. 하지만 SQL문 전..

[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
반응형