[Tistory] 코드리뷰

목차유니티 WebGL과 TaskAOT, JIT – System.Reflection.EmitAddressable Asset System기타 내용(람다, event 최적화, 게임 서버 접속)코드리뷰 ● 유니티 WebGL과 Task유니티 WebGL은 C#의 Task를 못씁니다. 그 이유는 유니티 WebGL은 싱글스레드만 제공하기 때문입니다. 그래서 개발중에는 별 문제를 못 느낄 수 있지만 실제로 WebGL에서 실행하면 실행이 안되는 것을 알 수 있습니다.해당 문제를 해결하기 위해서는 코루틴을 통해 비동기를 구현하거나 UniTask라는 패키지를 사용해야 합니다. (https://github.com/Cysharp/UniTask)유니티는 PlayerLoop 시스템은 초기화와 프레임별 업데이트를 처리하는 다양한 시스..

[Tistory] 쿠키, 세션

Http의 비연결성, 무상태브라우저와 서버는 실제로 멀리 떨어져 있습니다. 이 둘은 연결되어 있는 것처럼 보이지만, 연결되어 있지 않습니다.만약 계속 연결되어 있다면 이 상태를 계속해서 유지시켜준다면 매우 큰 서버 비용이 발생하게 될겁니다.Http라는 프로토콜을 이용하여 통신하는데, 그 통신은 비연결성(Connectionless)와 무상태성(Stateless)로 이루어집니다.비연결성서버와 클라이언트가 연결되어 있지 않다는 것 입니다.채팅이나 게임 같은 것들을 하지 않는 이상 서버와 클라이언트는 실제로 연결되어 있지 않습니다.무상태성서버가 클라이언트의 상태를 저장하지 않는다는 것입니다.기존의 상태를 저장하는 것들도 마찬가지로 서버의 비용과 부담을 증가시키는 것 이기 때문에 기존의 상태가 없다고 가정하는 프..

[Tistory] EC2의 user data를 사용해 Init Script 작성

참고 블로그: https://velog.io/@_woogie/EC2%EC%8B%9C%EC%9E%91%ED%95%A0-%EB%95%8C-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%9E%90%EB%8F%99%EC%8B%A4%ED%96%89%ED%95%98%EC%97%AC-%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0feat.-pm2 https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/user-data.html서버 재부팅시 자동으로 서비스 올라가는 스크립트를 작성할 것이다. ssh password 로그인 활성화#!/bin/bashsudo -ised -i ‘s/PasswordA..

[Tistory] [프로젝트] builder와 BeanUtils.copyProperties()

✅ 들어가며 첫 번째 Pull Request에서 받은 코드리뷰를 통해 고민해 오던 Entity에 Setter를 없애는 방법에 대한 힌트를 얻게 되었다. 나는 프로젝트에서 Entity↔DTO 변환을 위해 BeanUtils.copyProperties()를 사용하였다. 해당 방법을 사용하면서 Entity에 Setter를 생성해야 했어서 이전에 공부한 도메인 중심 개발과 상충되는 부분이 생겨 고민을 했었는데, 송아쌤과 스터디메이트의 코드를 보고 builder에 대해 공부해 보고 적용해보고자 한다. ✅ Builder 생성자에 @Builder를 붙여주면 빌더 패턴 코드가 빌드된다. 각 인자가 어떤 의미인지 알기 쉽다. Setter가 없으므로 불변 객체를 만들 수 있다. 한 번에 객체를 생성하므로 객체 일관성이 깨지..

[Tistory] [리액트] 전역상태관리 기준에 대한 고찰

다양한 상태를 관리하며 더 효율적인 상태관리에 대하여 고민하게 되었다. 📌 상태(state)는 무엇인가? 상태는 변하는 데이터이다. 더 정확히 말하자면 리렌더링에 영향을 미치는 변하는 값이다. 리액트에서 페이지는 주로 props나 상태에 영향을 받아 컴포넌트가 변화할 때 리렌더링이 된다. 리렌더링이 유발되면 가상 dom에서 변경된 부분만 캐치하여 실제 dom에 반영되고 우리가 의도한대로 값을 변경하여 보여준다. 📌 상태 관리의 종류 상태는 지역상태와 전역상태로 나뉘고 그에 따른 관리 방법이 다르다. 지역 상태 ( local state ) 관리 한 컴포넌트 안에서 useState를 통하여 상태를 선언하고ㅁ 상위 컴포넌트에서 하위 컴포넌트로 props를 넘겨 전달하는 props drilling 방식의 상태관..

[Tistory] 밀양 여중생 성폭행 사건 내용 정리 및 링크

이번에 백종원 유튜브 영상으로 인해 과거 밀양 여중생 성폭행 사건이 다시 뉴스에 오르내리고 있습니다. 여러가지 내용들이 많은데 관련 내용을 링크하였습니다. 밀양 여중생 성폭행 사건2004년 발생한 밀양 여중생 집단 성폭행 사건은 44명의 학생이 1년간 여자 중학생을 집단으로 성폭행한 사건입니다.  대부분의 가해자들은 1986 – 1988년 생 고등학생으로 알려져 있습니다. 당시 한 명의 학생도 처벌 받지 않아 더욱 이슈가 되었습니다. https://namu.wiki/w/%EB%B0%80%EC%96%91%20%EC%97%AC%EC%A4%91%EC%83%9D%20%EC%A7%91%EB%8B%A8%20%EC%84%B1%ED%8F%AD%ED%96%89%20%EC%82%AC%EA%B1%B4가해자 백종원 영상에 등..

[Tistory] 리액트 폴더 구조 이해하고 정리하기 [React][NFast 프로젝트]

싸피에서 진행했던 프로젝트들 중 React 언어를 사용했던 NFast와 RealCart를 회상하며 리액트에서의 폴더 구조를 정리해보고자한다. 같이 협업하는 프론트엔드끼리 폴더 컨벤션을 정해놓는게 의사소통에 매우 유리해지니 폴더 구조를 필히 알아놔야한다고 생각한다. React 폴더 구조 NFasT 프로젝트에서의 React 폴더 구조 아래는 NFasT에서의 React 폴더 구조이다. 일단 큰 구조를 보자 node_modules 현재 프로젝트에 포함된 라이브러리들이 설치되어있다. 보통 깃 저장소에 올릴때는 함께 올리지 않는다. public 컴파일이 필요없는 파일들이 위치한다. 절대경로로 불러올 수 있다.index.html과 같은 정적인 파일들이 포함되는 곳. src 앱이 컴파일 될 때 사용하는 모든 것. 개발..

[Tistory] [JAVA]자바 기초 개념 이해

1. 자바의 역사 및 특징 ✔ 1995년 썬 마이크로시스템즈(Sun Microsystems)에서 제임스 고슬링(James Gosling)을 비롯한 개발팀에 의해 개발된 객체지향 프로그래밍 언어 ✔ 단순하고 이식성이 뛰어나며, 다양한 플랫폼에서 실행 가능 역사 1991년 : 프로젝트 “Oak” (with 제임스 고슬링 & 팀원) => 자바로 발전 1995년 5월 23일 : (썬 마이크로시스템즈) 자바 공식 발표 1996년 1월 23일 : 자바 1.0 버전 출시 이후 현재까지 지속적으로 업데이트 진행중 특징 이식성(Platform Independence) Write Once, Run Anywhere(WORA) : 한 번 작성한 프로그램은 어떤 플랫폼에서든 실행 가능 객체 지향(Object-Oriented) ..

[Tistory] [ElasticSearch]Springboot 매치 쿼리 – @Query, @Mapping, @Setting

@Mapping, @Setting https://javas.tistory.com/17 @Setting, @Mapping nori 설정 @ 십질 끝에 정리 – Setting or Mapping 은 최초 index (table) 생성시 적용이 됩니다. – 중간에 끼어 넣기 안됨 , 최초 생성하면서 설정 해줘야함 . – spring data @Document 객체에 @Setting, @Mapping annotation을 통해서 javas.tistory.com https://velog.io/@dktlsk6/Spring-boot-ElasticSearch-%EC%97%B0%EB%8F%99-%ED%95%98%EC%97%AC-%EC%8B%A4%EC%8B%9C%EA%B0%84-%EA%B2%80%EC%83%89-%EC%8..

[Tistory] [Vue 3] defineProps() 와 defineEmits() 비교하기

📌들어가기 전 defineProps와 defineEmits와 같은 옵션을 선언하기 위해서는 📌defineEmits() 란? 자식 컴포넌트에서 부모컴포넌트로 데이터를 전달할 때 사용한다. 부모 컴포넌트에서 emits 옵션으로 이벤트를 정의하고, 자식 컴포넌트에서는 defineEmits를 사용하여 이벤트 목록을 정의한다. 📌defineProps() 와 defineEmits() 의 공통점 사용되는 변수 이름은 CamelCase가 아닌 kebab-case 사용을 권장한다. 전달된 옵션은 setup에서 모듈 범위로 호이스트 된다. 따라서 옵션은 setup 범위에서 선언된 로컬 변수를 참조할 수 없다. 참조할 시에 컴파일 에러가 발생한다. 하지만, import한 바인딩은 모듈 범위에 있으므로 참조할 수 있다. * ..