본문 바로가기

전체 글

(190)
WIL-9 Fact : 이번주 있었던 일, 내가 한 일 월 : WebSocket 게임 구현 코드 분석 화 : 게임 관련 로직(라운드, 베팅) 구현 시작 수 : 라운드 시작, 종료, 베팅 관련 로직 구현, Call by Reference 학습 목 : 코드 리팩토링 작업, JPA 더티 체킹 학습 금 : 코드 리팩토링 작업, 스택과 힙 메모리 학습 토 : 게임 관련 로직 단위 테스트 및 통합 테스트 Feeling : 나의 감정적인 반응, 느낌 게임 관련 로직을 처음 만들다보니 구현에 어려움을 많이 느낌 작성한 코드가 통합 테스트를 할 때 제대로 동작할 지 불안했음 Finding : 그 상황으로부터 내가 배운 것, 얻은 것 코드 작성 후 리팩토링 작업을 통해 코드에 대한 이해도를 높이고 향후 유지보수에 좋도록 바꾸는 방법..
Java - 컴파일, JVM 스택 / 힙 메모리, 클래스 / 인스턴스 Java 컴파일 과정 자바 컴파일 과정 개발자가 자바 소스코드(.java)를 작성합니다. 자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일합니다, 이때 나오는 파일은 자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드입니다. 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있습니다. 컴파일된 바이트 코드를 JVM의 클래스로더(Class Loader)에게 전달합니다. 클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data area), 즉 JVM의 메모리에 올립니다. 클래스 로더 세부 동작 로드 : 클래스 파일을 가져와서 ..
Override, Overload / JPA 더티체킹 / JVM Overloading(오버로딩) 같은 이름의 메서드를 여러 개 가지며 매개변수의 유형과 개수가 달라도 되는 기술 두 메서드가 같은 이름을 가지고 있으나 인자의 수나 자료 타입이 다른 경우를 뜻함(리턴 값만 다르게 갖는 오버로드는 작성할 수 없음) 오버로딩 예시 public double computeArea(Circle c) { ... } public double computeArea(Circle c1, Circle c2) { ... } public double computeArea(Square c) { ... } Overriding(오버라이딩) 상위 클래스의 동작을 상속받은 하위 클래스에서 변경하기 위해 사용 상위 클래스의 메서드와 이름, signature가 같은 함수를 하위 클래스에 재정의하는 것(상속..
Call by Reference 자바의 Call by Value / Call by Reference 함수의 매개변수에서 값을 복사하느냐 주소값을 참조하느냐에 따라 반환 결과가 달라지기 때문에 대부분의 프로그래밍 교육 과정에서는 중요시 하게 여김 자바의 데이터 타입은 크게 두 가지로 나뉨 기본형(primitive type) : Boolean Type(boolean), Numerice Type(short, int, long, float, double, char) 참조형 (reference type) : Class Type, Interface Type, Array Type, Enum Type, 기본형을 제외한 모든 타입 메서드에 입력값(파라미터)에 원시값(primitive type)을 전달하는 것과 객체(reference type)를 전달하..
WebSocket 활용 웹 게임 구현 요구 조건 WebSocket 통신을 이용한 유저간 1:1 인디언 포커 게임을 실행할 수 있어야 한다 게임은 1판에 총 3개의 라운드가 진행되야 한다 각 라운드는 규칙에 맞게 동작할 수 있어야 한다 게임 종료 후 유저의 선택에 따라 게임을 다시 시작하거나 게임방 또는 로비로 나가도록 구현되야 한다 게임 규칙 숫자 1~10까지의 숫자 카드 덱 2개를 사용한다 라운드 종료 시 더 높은 숫자 카드를 가진 유저가 라운드에서 승리하고 베팅된 포인트를 모두 가져간다 라운드 시작 시 플레이어는 각각 카드를 1장 받는다(자신의 카드는 라운드 종료 시까지 확인할 수 없음) 베팅은 다음 3가지 중 하나를 선택할 수 있음 CHECK 선턴인 유저 : 게임에 참가한 유저 중 포인트가 더 적은 유저의 10% 값 만큼 베팅한다 후턴..
WebSocket - 실제 코드 분석 웹 게임 프로젝트 관련 코드 분석 - with GPT4 분석 프로젝트 : https://github.com/namoldak/Backend/tree/dev/src/main/java/com/example/namoldak Config WebSocketConfig package com.example.namoldak.config; import com.example.namoldak.util.webSocket.SignalHandler; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context..
Git Project 관리 Git Project 생성 1. GitHub 대시보드에서 Project → New project 클릭 2. Project Template 선택 후 프로젝트 생성 3. +버튼(Add a new column to the board)으로 보드 추가, ... 버튼(Action for column)으로 보드 관리 4. + Add item 버튼으로 이슈 추가 이슈 페이지에서 생성 후 프로젝트 연결도 가능 Git Issue 관리 이슈 생성 - 공식문서 Issue Template 1. 세팅 repository → settings 2. General 탭의 스크롤을 내려 Features → Issues → Set up Templates 3. Add Template : select 후 원하는 템플릿 선택(Custom tem..
WIL-8 Fact : 이번주 있었던 일, 내가 한 일 월 : 클론 코딩 프로젝트 발표 및 회고 화 : 최종 프로젝트 발제, 팀 SA 작성, 프로젝트 주제 선정 수 : 웹 게임 프로젝트 기획 목 : WebSocket 학습, ERD, API 설계 금 : WebSocket 학습, 백엔드 깃 컨벤션, 코드 컨벤션 확립 토 : WebSocket 학습, 1주차 멘토링 Feeling : 나의 감정적인 반응, 느낌 최종 프로젝트라 잘 해낼 수 있을지 불안하고 긴장됨 내가 만든 프로그램을 유저에게 직접 테스트 받을 수 있어서 기대 됨 Finding : 그 상황으로부터 내가 배운 것, 얻은 것 하나의 기술을 구현하기 위한 기술 스택의 종류와 기술 스택을 정하기 위한 의사결정에 대해 배웠음 WebSocket에 대해 배움 Future..