목록2024/09 (27)
HJW's IT Blog
24일 기록group 내용 수정 관련 API 를 만들었다. DTO를 사용하여 데이터를 다루었는데, DTO 의 이점을 확실하게 알고 쓰는게 좋을 것 같다.Data EncapsulationType Safety데이터 구조 통일성id 를 통해 group 정보를 받아와야 하는데, 향후 또 사용될 일이 있을것 같아 findGroupById 함수를 별도의 파일에 분리하여 작성하였다.// routerrouter.put('/groups/:GID', async (req, res) => { const groupId = parseInt(req.params.GID, 10); const { name, password, imageUrl, isPublic, introduction} = req.body; try{ const..
TypeScript를 사용하는 만큼 그 이점인 객체 지향적 설계에 신경을 써서 프로젝트 구조를 설계 하였다.한가지 기능을 3파트로 나누어 작성하였다. DTO, router, controller.DTO : Data Transfer Object어플리케이션 계층간 데이터를 전송하는데 사용되는 객체이다.타입 안정성을 컴파일 타임에 검증할 수 있다유효성을 검증하여 잘못된 데이터의 전달을 막을 수 있다.Router들어오는 요청을 적절한 controller 로 매핑하고, 라우팅 로직을 관리한다API 경로가 라우터를 통해 모듈화 되어 있기 때문에, 새로운 API 를 추가하거나 기존 API에 대한 수정을 할 떄, 다른 부분과 독립적으로 수정이 가능하다Controller컨트롤러는 애플리케이션의 비즈니스 로직을 담당하며, ..
주어진 요구사항에 따라 ERD 설계를 시작하였다.만들다 보니 GROUP은 SQL 예약어이기 때문에 다른 이름으로 해야겠다는 생각이 들었다. GROUP 과 BADGE 의 관계는 N:N 관계이기 때문에, 이 두 테이블의 PK를 Composite Key 로 사용하는 GROUP_BADGE 테이블을 생성하였다.TAG 와 POST 의 관계 또한 N:N 관계이기에 Composite Key 를 생성하였다. 다음은 주요 table sql 이다. CREATE TABLE `Groups` ( `GID` INTEGER PRIMARY KEY AUTOINCREMENT, `GName` VARCHAR(100) NOT NULL, `GImage` VARCHAR(255), `GIntro` TEXT, `IsPubl..
https://school.programmers.co.kr/learn/courses/30/lessons/92345?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 분석이 문제는 두 플레이어 A와 B가 1x1 크기의 격자로 이루어진 보드 위에서 최적의 전략으로 게임을 진행하는 시뮬레이션 문제이다.각 플레이어는 발판이 있는 칸에만 이동할 수 있으며, 발판이 사라지는 조건에서 더 이상 이동할 수 없게 되면 패배한다.게임을 A 가 항상 먼저 시작하며, 양 플레이어는 최선 의 전략을 구사해야 한다.두 플레이어가 모두 최선의 전략으로 게임을 진..
주어진 요구사항에 따라 ERD 설계를 시작하였다. 주어진 요구사항은 다음과 같았다### 그룹**그룹 등록**- 그룹명, 대표 이미지, 그룹 소개, 그룹 공개 여부, 비밀번호를 입력하여 그룹을 등록합니다.**그룹 수정**- 비밀번호를 입력하여 그룹 등록 시 입력했던 비밀번호와 일치할 경우 그룹 정보 수정이 가능합니다.**그룹 삭제**- 비밀번호를 입력하여 그룹 등록 시 입력했던 비밀번호와 일치할 경우 그룹 삭제가 가능합니다.**그룹 목록 조회**- 등록된 그룹 목록을 조회할 수 있습니다.- 각 그룹의 이미지(한 장), 그룹명, 그룹 소개, 그룹 공개 여부, 디데이(생성 후 지난 일수), 획득 배지수, 추억수, 그룹 공감수가 표시됩니다.- 공개 그룹 목록과 비공개 그룹 목록을 구분하여 조회합니다.- 최신순,..
https://school.programmers.co.kr/learn/courses/30/lessons/118668 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 이해우선, 문제를 풀기 위해 필요한 알고력(alp_req)과 코딩력(cop_req)이 주어지고, 현재 가진 알고력(alp)과 코딩력(cop)이 주어진다. 알고력과 코딩력을 높이기 위해서는 다음과 같은 방법이 있다:알고력이나 코딩력을 1 올리는데 각각 1의 시간이 소요된다.현재 풀 수 있는 문제를 풀어서 알고력과 코딩력을 올릴 수 있다. 문제를 풀면 정해진 시간(cost)이 소요되며, 알고력(al..
VPC를 이용한 EC2 구축AWS 로그인 후, VPC 검색VPC 생성VPC 만 을 선택하고, 이름을 영문으로 이루어진 (띄어쓰기는 하이픈 사용) 이름태그를 설정한다ip 대역 : 10.0.0.0/16 생성후, 사이드바에서 서브넷 생성 방금 생성한 서브넷을 선택하고, 서브넷 이름을 생성. 그 후, CIDR 을 10.0.1.0/24 로 생성한다. 생성완료 후, 이제 인터넷 게이트웨이를 생성해야 한다 이제 해당 게이트웨이와 VPC 를 연결해야 한다 이제 라우팅 테이블을 수정해야 한다public subnet 은 외부로 나갈때, internet gateway 를 거치게 한 라우팅을 서브넷에 연결하면 된다. 라우팅 테이블은 VPC 를 만들면 자동으로 만들어지기 때문에 수정만 하면 된다. 위 사진을 보면, 현..
정적 컨텐츠정적 콘텐츠는 모든 사용자에게 동일한 정보를 제공하는 콘텐츠로, 주로 서버에 미리 저장된 HTML, CSS, JavaScript, 이미지 파일 등을 포함한다. 이러한 콘텐츠는 웹 서버에서 직접 제공되며, 캐싱이 용이하여 사용자에게 빠르게 전달될 수 있다는 특징이 있다. 정적 콘텐츠의 장점은 빠른 로딩 속도, 높은 안정성, 그리고 보안에 유리하다는 점이다. 서버에서 미리 준비된 파일을 제공하므로 데이터 처리에 필요한 부하가 적고, 성능이 일정하게 유지된다. 또한, 캐싱을 통해 동일한 요청에 대해 더 빠르게 응답할 수 있어 사용자 경험이 향상된다. 하지만 정적 콘텐츠는 유연성이 부족하다는 단점이 있다. 콘텐츠가 고정되어 있어 사용자의 요구에 따라 동적으로 변하지 않으며, 콘텐츠 업데이트 시 번거로..
서버란 클라이언트의 요청에 적절한 응답을 주는 것.어떻게 요청과 응답을 주는지, 적절한 응답을 찾는 것이 포인트.클라이언트와 서버가 어떻게 정보를 주고 받는가를 정확하게 이해하기 위해선, 인터넷이 무엇인지, 어떻게 구성되는지, 어떤 방법으로 통신하는지를 알아야 한다. OSI 7계층 모델을 통한 네트워크 통신 이해하기네트워크 통신을 OSI 7 계층으로 이해하면, 송신 호스트와 수신 호스트 간의 데이터 전송 과정을 알 수 있다. 송신 호스트란 브라우저를 사용하는 사용자를 뜻하며, 수신 호스트는 브라우저의 서버를 뜻한다.7계층응용계층 : Application Layer→ HTML, FTP, HTTP, SMTP 와 같은 데이터 형식을 사용한다→ 웹 브라우저등을 일컫는다→ 사용자와 네트워크 간의 인터페이스를 제공..
https://school.programmers.co.kr/learn/courses/30/lessons/118669 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 분석XX산의 지점은 출입구, 쉼터, 산봉우리로 나뉘어 있습니다. 우리는 출입구에서 시작해 산봉우리를 한 번만 방문하고 다시 출입구로 돌아오는 등산코스를 찾고자 합니다. 이 코스의 intensity는 휴식 없이 이동해야 하는 시간 중 가장 긴 시간을 의미하며, 이를 최소화하는 것이 문제의 핵심입니다.이 문제는 여러 지점과 등산로가 주어졌을 때, 주어진 조건을 만족하는 최소 intensity 코스..