ERROR!!!!!!! 16

외부 시스템에 덜 의존하게 만들기

이전 글 예외처리에 대한 잡설에 이어서 지난 몇 달 간 아파트 입주민이 사용하는 방문예약 시스템을 개발했다. 입주민이 방문 차량을 예약하면 우리 시스템은 아파트 차단기를 관리하는 외부 시스템에 요청을 보내서, 예약된 차량이 간편하게 입차할 수 있게 하는 서비스다. 이 시스템의 아이덴티티는 예약하면 차단기가 열린다는 것이다. 그런데 우리는 차단기 회사가 아니고 차단기로 예약을 요청을 대신 보내주는 대리자 역할이다. 따라서 외부 시스템에 크게 의존적일 수밖에 없는 서비스다. 플로우는 복잡하지 않는데 간략하게 설명하면 세 단계로 볼 수 있다. 사용자가 앱에서 방문 차량을 예약한다. 메인 서버에서 방문 예약 서버로 요청을 위임한다. 방문 예약 서버는 외부 시스템인 차단기 관제 서버에 예약 내역을 전송한다. 사용..

ERROR!!!!!!! 2022.07.13

docker-compose로 mysql 올렸는데 unknown database 에러 발생

docker-compose 파일로 데이터베이스 스키마를 만든 다음, 스프링 애플리케이션을 실행하려고 하니 unknown database라는 메시지가 떴다. 워크벤치로 확인할 때는 정상적으로 접근할 수 있었다. 3306 포트를 조회했을 때 몇 가지 프로세스들이 보여서 3306 포트를 사용하는 것들을 다 kill 해버렸다. 다른 건 다 죽었는데 mysqld는 죽여도 죽여도 다시 살아났다. 그렇게 그냥 토요일 공부를 접었고 일요일이 되었다. 여기서도 마찬가지로 로컬 mysql이 실행 중인지 확인하고 죽인 뒤에 다시 시도하라는 이야기가 나왔다. $mysqladmin shutdown # 3306 포트로 실행 중인 mysql이 죽기는 하지만 바로 다시 살아남 $mysql.server stop # 3306 포트로 실..

ERROR!!!!!!! 2022.05.08

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000eaaa0000, 178978816, 0) failed; error='Not enough space' (errno=12)

문제 EC2(Amazon Linux2 AMI)서버에서 springboot gradle프로젝트를 ./gradlew test로 테스트하려고 하니 메모리가 충분하지 않다는 에러가 발생헀다. * What went wrong: Unable to start the daemon process. This problem might be caused by incorrect configuration of the daemon. For example, an unrecognized jvm option is used. Please refer to the User Manual chapter on the daemon at https://docs.gradle.org/6.7/userguide/gradle_daemon.html Proces..

ERROR!!!!!!! 2021.01.29

[Gradle Build Error]java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain

문제 EC2서버에서 springboot-gradle프로젝트를 다운 받고 테스트를 돌리려고 하면 실패했다 $ ./gradlew test 오류: 기본 클래스 org.gradle.wrapper.GradleWrapperMain을(를) 찾거나 로드할 수 없습니다. 원인: java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain이런 에러가 나타났다. 처음에 편법으로 해결한 방법은 Gradle을 설치해서 직접 gradle wrap으로 빌드했다. 하지만 이건 프로젝트가 업데이트되어 Pull해오면 다시 직접 gradle wrap으로 빌드를 해줘야 하는 편법이었다. 그리고 좀 이상했다. gradlew를 쓰는 이유가 gradle설치 없이도 gradle프로..

ERROR!!!!!!! 2021.01.29

Ajax통신할 때 리턴타입이 void인 경우

{"readyState":4,"responseText":"","status":200,"statusText":"parsererror"} 간단한 게시판을 만드는데, 삭제 버튼 구현 중에, 자꾸 위와 같은 에러 메세지가 났다. 상태코드가 200인데 parse에러? 문제는 컨트롤러에 있었다. //삭제 api @DeleteMapping("/api/v1/posts/{id}") public void deletePost(@PathVariable Long id) { postsService.delete(id); //return id; } 이게 에러가 나던 코드다. 따로 리턴해 줄 필요가 없을 것 같아서 아무것도 반환하지 않았는데, 무언가를 반환해야만 제대로 처리되었다고 인식했다. 그래서 반환타입을 Long으로 바꾸고 파라..

ERROR!!!!!!! 2020.10.06

Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'local.server.port' in value "${local.server.port}"

ApiController테스트 중 에러가 발생했다. 테스트 코드는 이렇다. @Test public void posts_등록한다() throws Exception { //given String title = "title"; String content = "content"; PostsSaveRequestDto requestDto = PostsSaveRequestDto.builder() .title(title) .content(content) .author("author") .build(); String url = "http://localhost:" + port +"/api/v1/posts"; //when ResponseEntity responseEntity = restTemplate.postForEntity..

ERROR!!!!!!! 2020.10.06

nested exception is org.hibernate.exception.ConstraintViolationException

JPA 테스트 중 에러 Referential integrity constraint violation: "FKR1BMBLQIR7DALMH47NGWO7MCS: PUBLIC.REPLY FOREIGN KEY(BOARD_BNO) REFERENCES PUBLIC.BOARD(BNO) (75)"; SQL statement: insert into reply (board_bno, replyer, text) values (?, ?, ?) [23506-200]could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute ..

ERROR!!!!!!! 2020.10.02

[MySQL]Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. "안전 업데이트 모드를 사용 중이며 KEY 열을 사용하는 WHERE없이 테이블을 업데이트하려고했습니다. 안전 모드를 비활성화하려면 기본 설정-> SQL 편집기에서 옵션을 토글하고 다시 연결합니다." MySQL에서 update하던 중 에러가 발생했다. 게시글 목록을 담아두는 테이블 tbl_board에 각 게시글에 달린 댓글 수를 조회할 수 있도록..

ERROR!!!!!!! 2020.09.13

자바스크립트를 이용한 페이징 삽질 - 일반 함수의 this와 화살표 함수의 this는 다르다

JS 삽질기 js에 미숙하다 보니까 별것 아닌데 몇 시간을 삽질했다. 나는 여기서 a태그의 href속성을 받아오려고 했다. 모던 자바스크립트를 써보겠다고 화살표 함수를 고집했다. 자꾸 this값이 오지 않았다. 화살표 함수 때문일 것이라고는 1도 생각 못하고 계속 딴짓만 했다. 원하는 결과는 페이지 넘버 3페이지면 3. 5페이지면 5였는데, 자꾸 이런 결과만 나왔다. 속성을 뒤져봐도 내가 원하는 값을 가진 프로퍼티는 없었다. 도대체 뭘까? 별 걸 다 해봤는데. 그러니까 $(document).ready(() => {....})로 선언했던 것을 $(document).ready(function() {....})로 다시 바꿔도 보고. 그러면서도 화살표 함수를 바꿀 생각을 왜 하지 못했는지 모르겠다. 난 표현식만..

ERROR!!!!!!! 2020.09.13