일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- MySQL
- springboot
- unity
- screencapture
- java
- express
- spread 연산자
- server
- mongoDB
- linux
- nodejs
- --watch
- Google Refund
- Unity IAP
- css framework
- Camera Movement
- Git
- Digital Ocean
- OverTheWire
- Spring Boot
- draganddrop
- critical rendering path
- rpg server
- Google Developer API
- SDK upgrade
- react
- docker
- Packet Network
- Unity Editor
- Camera Zoom
- Today
- Total
목록Server (27)
우당탕탕 개발일지

오늘의 목표게스트 가입과 게스트 로그인을 구현한다.게스트 가입/로그인 시 성공한 유저의id, 백업된 데이터(로그인 유저일 경우) , 엑세스토큰을 반환한다. 가장 외부부터 보자. AuthController.js에서는 guest로 가입하는 함수, uid를 이용해 로그인하는 함수 2개를 만들었다. 실제 가입/로그인 로직은 UserService.java에서 이루어지고있다.//AuthController.java @PostMapping("/register/guest") public ResponseEntity registerGuest() { User newGuest = userService.registerGuest(); 유저가입 //가입정보를 바탕으로 로그인 진행 Opti..

서버는 springboot 와 mysql로 진행할 예정이다. 필요한 기능은 유저 로그인, 백업, 뽑기, 랭킹, 메일 등등 방치형 RPG에 필요한 기본 기능들을 위주로 만들려 한다. 클라이언트는 유니티로 제작할 예정이다. 첫 시도라 매우 두근두근! 오늘의 목표springboot 프로젝트 생성하기test api 만들기유니티 프로젝트 생성하기backendmanager, apiManager를 만들어서 서버와 통신하기1. 프로젝트 생성하기https://start.spring.io/ 버전은 snapshot이 붙지 않은 버전 중 가장 최신버전으로 선택했다.gradle-groovy , java로 선택한다.추가할 dependencies는 다음과 같다.Spring Web (Rest API개발용)Spring Boot De..
파일을 입력받아 파싱 > 새로운 파일을 다운로드 할 수 있는 API를 제작했었다. 그런데 용량이 큰 파일을 처리하면 클라이언트 쪽에서 아래 에러와 함께 전송이 실패하는 문제가 발생했다.ERR_CONTENT_LENGTH_MISMATCH 200 (OK) 문제는, 로컬에서 서버를 실행시키고 API를 요청했을 때는 동일한 파일이더라도 정상적으로 작동한다는 것이다.pm2 와 nginx를 사용중이었기 때문에 세팅에 문제가 있을 것이라고 생각했다. 여러가지 옵션들을 건드리는데도 해결이 되지 않았으나, 서버 로그를 통해 단서를 찾을 수 있었다. 0|server | start send file. size:1963580|server | Streaming file: /root/project/server/upload..
메일보내기를 하면서 내 이메일과 앱 비밀번호를 application.properties에 넣어야하는데, application.properties는 깃에 올라가기 때문에 보안상의 이슈가 있다. 그래서 .env파일로 옮기는 방법을 찾아보았다. 루트디렉토리( build.gradle 이 있는 위치)에 .env 파일을 생성하여 다음과같이 원하는 변수를 설정한다.##.envmail.username=myusernamemail.password=mypassword .gitignore 파일에 .env를 추가한다.git에 커밋되지 않도록 도와준다. build.gradle에 dependencies를 추가한다. .env안의 값을 가져올 수 있게 하는 라이브러리이다.implementation 'io.github.cdimasc..
고객이 문의하기를 남기면 문의하기 내용과 함께 이메일로 전송이 되는 기능을 구현하고 있다. 구글은 많이 복잡하다고 하여, 오늘은 네이버로 구현해본다. 다음에 기회가 되면 구글로도 구현해보자. ( 사실은 구글 구현하다가 계속 인증실패가 떠서 중도포기했다.. 다음번에 꼭 정복해보도록 하자..ㅜㅜㅜ) 네이버 계정에서 SMTP 를 활성화 네이버 메일에 로그인 > 환경설정 > IMAP / SMTP 설정 > 외부메일 프로그램 사용 옵션을 활성화한다.네이버 계정 설정 > 보안설정 > 2단계 인증 > 애플리케이션 비밀번호를 생성한다. 종류는 지메일로 하였다. 비밀번호는 한번 페이지를 벗어나면 다시 보여주지 않으므로 다른곳에 잘 백업해 두도록 하자. SpringBoot 프로젝트에 dependencies 추가build...
배포하기 위해서는, 로컬환경과 배포환경 시 서로다른 세팅을 적용해야한다. 이를 위해 profile 을 사용한다.개발 단계에서는 메모리에 가볍게 저장/휘발되는 H2DB 를 사용한다. 변경사항이 많기 때문에 테이블을 신경쓰지 않고 개발이 가능하다. ddl-auto 옵션을 활성화 하면 테이블이 자동으로 생성된다.릴리즈버전에서는 mysql 버전을 사용하도록 profile을 설정한다. build.gradle에 implements를 추가한다.implementation 'com.h2database:h2' application.yamlspring: config: activate: on-profile: dev datasource: url: "jdbc:h2:mem:library;MODE=MYSQL..
실습 library db에는 user테이블과 book테이블, 그리고 어떤 유저가 어떤 책을 빌렸는지 정보를 저장하는 user_loan_history 테이블이 있다. user_loan_history 테이블은 아래처럼 생겼다.create table user_loan_history( id bigint auto_increment, user_id bigint, book_id bigint, is_return tinyint(1),) SQL대신 ORM을 사용하게 된 이유 중 하나는, DB테이블과 객체의 패러다임이 다르기 떄문이었다. Java는 객체지향형 언어이고, 대규모 웹 어플리케이션을 다룰 때에도 객체지향적인 방법이 어울린다. 현재 코드를 조금 더 객체지향적으로 업그레이드 하는 방법을 알아보자..
트랜잭션Service계층이 해야하는 역할, 트랜잭션이다.연관된 작업은 모두 성공하거나 모두 실패한다. 이 쪼갤 수 없는 작업의 단위를 트랜잭션이라고 한다. start transaction;commit; ## successrollback; ## fail 서비스 메소드가 시작할 때 트랜잭션이 시작된다서비스 메소드 로직이 모두 성공적이면 commit,한개라도 실패하면 rollback되도록 구현해보자.Service 계층의 함수 위에 @Transaction 어노테이션을 이용하여 구현할 수 있다. @Transactional public void saveUser(UserCreateRequest request){ userRepository.save(new User(request.getName(..