본문 바로가기

전체 글

자바의 정석 - 1.1 자바 1.1 자바 1.1.1 자바란? 객체지향 언어로서 운영체제에 독립적인 언어이다. 1.1.2 자바 애플릿(Java Applet) 정적인 웹페이지에 사운드와 애니메이션 등의 멀티미디어적인 요소를 제공 과거 멀티미디어적인 요소를 제공하는 유일한 방법이었으나, 현재 보안상의 이유로 더이상 지원을 하지 않는 기능이다. 현재 서버 쪽 프로그래밍을 위한 서블릿(Servlet)이나 JSP(Java Server Pages)를 사용한다. 1.1.3 특징 운영체제에 독립적이다 자바 애플리 케이션과 OS사이에 JVM이 존재한다. JVM이 각종 명령을 운영체제에 맞게 번역을 하여 OS에 전달하기 때문에 운영체제에 독립적이다. 하지만, JVM자체는 운영체제에 종속적이기 때문에 다양한 JVM을 제공하고 있다. 객체지향 언어다 JA.. 더보기
[Flask] FileNotFound Error 예전에 Flask로 만든 인공지능 서버를 배포하려고 다시 실행해 봤는데, 인공지능 모델을 불러오는 코드인 torch.load()가 동작을 하지 않는다.... (모델을 불러오는 코드 모듈과 실제 모듈은 같은 위치에 존재한다..) project |---app.py |---model.pt 개발할 때에는 잘 됐었는데... 이틀간 고생한 결과 방법을 찾긴 찾았다. 아래의 코드와 같이 경로를 수정할 수 있게 한다. import os if __name__ == "__main__": dir = os.path.dirname(os.path.realpath(__file__)).replace('\\', '/') + '/' model = torch.load(dir+'model.pt') 아마 운영체제의 버그때문에 발생하는 에러 .. 더보기
[Flask]ConnectionError: HTTPConnectionPool urllib3.connection.HTTPConnection flask에서 redis + celery를 통해 ML 서버에 request 보내는 작업을 하고 있던 도중, 제목과 같은 에러를 접하게 되었다. 필자는 docker-compose를 통해 flask, redis, celery를 하나로 묶어 queue 서버를 만들고 있었던 것이다. docker-compose로 묶은 queue 서버에서 ML 서버로 보내는 요청은 로컬 서버라 localhost로 요청을 보냈다. docker에서 localhost로 request를 보내면 제목과 같은 httpconnection 에러가 뜨는 것이다. 도커는 host.docker.internal로 요청을 보내야 제대로 http request를 보낼 수 있다. res = requests.post('http://host.docker.int.. 더보기
[Flask]Celery kombu.exceptions.EncodeError: Object of type 'bytes' is not JSON serializable Flask + Redis + Celery 이미지를 전달 받고, 해당 이미지를 Siamese Network 서버에 전달하는 방법을 사용하던 도중 아래와 같은 에러가 발생하고 있다. 에러가 나는 이유는 celery.end_task()를 하면 json으로 변환되서 넘어가기 때문이다. work 작업을 하는 Celery에 아래와 같이 conf를 변경하면 된다 추가 AWS EC2(Ubuntu)에 실제 배포해보니 또 다시 에러가 발생한다. 며칠의 삽질 덕분에(?) 에러 해결 방법을 다시 찾아냈다. Ubuntu 운영체제에서는 task_serializer=”pickle”을 제거하면 된다. 더보기
[Spring Boot]Repository could not be found in @Configuration Configuration에서 reposotory를 받아야 하는 경우가 발생해서 autowired를 했다. 하지만, 아래와 같은 에러를 만나게 되었다. 왜 빈을 찾을 수 없을까에 대해 고민을 했다. 설정파일이기 때문에 repository 빈을 가져올 수 없나?라고 생각을 잠깐 했었지만, @Repository역시 @Component와 마찬가지로 빈으로 등록하기 때문에 내 생각은 틀렸다. 나와 비슷한 문제를 가진 사람이 있을거 같아서 검색을 했다. 역시나 stackoverflow에 나와 같은 문제가 있었다. Can't Autowire @Repository annotated interface in Spring Boot 댓글 중, 아래 사진과 같이 Repository를 확인라라는 글을 봤다. 아니나 다를까, 오타.. 더보기
[Spring Boot] org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement DB 테이블의 컬럼 이름을 수정하고 이름이 일치하지 않아서 발생되는 에러입니다. ORM으로 DB 테이블을 만드시는 분들은 컬럼 이름을 자세히 확인해 보시기 바랍니다. 데이터가 없어져도 괜찮으신 분들은, DB 테이블을 삭제하고 하면 다시 실행하면 됩니다. 더보기
[Spring Boot] @AuthenticationPrincipal null value jwt + security로 토큰을 통해 사용자의 정보를 받아오고 있다. 위의 코드를 실행하는데 PrincipalDetails가 null 값이 들어온다. successfulAuthentication()의 jwt 생성 부분 doFilterInternal()의 jwt 인증 부분 자세히 보면 successfulAuthentication()의 withClaim() 부분과 doFilterInternal()의 getClaim()의 부분이 다르다. 하나는 username 이고, 다른 하나는 userName이다. 이틀간 고생해서 겨유 오류를 해결할 수 있었다. 토큰을 생성하는 부분과, 인증하는 부분의 value 값이 달라서 null 값이 들어오는 것이었다. String의 값을 파라미터로 주입할 때, 오타 조심하자!! 더보기