🍏 최근 포스트
-
JPA 구조는 어떻게 되어있고 spring-data-jpa와는 뭐가 다를까?
JPA는 Java Persistence API로, 자바 객체와 DB를 매핑하기 위한 인터페이스를 제공하는 자바 ORM 기술의 표준 명세입니다. SQL Mapper ORM sql과 객체를 매핑 DB와 객체를 매핑 mybatis, jdbcTemplate 등 hibernate, EclipseLink 등 개인적으로 mybatis를 썼을 때는 복잡한 sql문이 필요할 때는 비교적 편리하게 작성할 수 있다는 장점이 있었습니다. 하지만 DB를 중간에 변경하기 어렵고, 기획 변경사항이 생길 때마다 sql문을 일일이 수정해줘야하는 반복 작업을 수행해야 했습니다. 그래서 CRUD를 하루종일 짜고 있는 개발에서 벗어나 비즈니스 로직에 집중하기 위해 ORM 에 관심을 가지게 되었습니다. ❓ORM이란 객체는 객체대로, DB는 ..
-
[Java/kotlin] None of the following functions can be called with the arguments supplied 에러 해결
Java로 개발중이던 소셜로그인 코드를 코틀린으로 마이그레이션 하는 과정에서 만난 에러를 공유합니다. WebSecurityConfiguration에서 접근허용 배열인 AUTH_WHITELIST를 antMatchers에 설정하려고 할 때, None of the following functions can be called with the arguments supplied. 에러를 만나게 되었습니다. 해당 에러는 제공된 인수로 다음 함수를 호출할 수 없다는 에러인데, 이미 존재하는 배열인 AUTH_WHITELIST를 vararg(가변인자) 함수로 넘기려고 할 때 스프레드 연산자인 *를 붙여주지 않아서 발생하는 문제였습니다. 기존 코드 private static final String[] AUTH_WHITELI..
-
[Java] JVM 구조와 메모리 영역 - Method, Heap, Stack Area
JVM 동작 과정 JVM은 자바 가상 머신으로, 자바 바이트 코드를 해석하고 실행하는 역할을 합니다. 자바 코드는 JVM을 통해 실행되므로 Window, Linux와 같은 다른 OS에서도 동일하게 실행할 수 있다는 장점이 있습니다. 구체적으로 메모리 영역을 공부하기 전에 JVM이 자바 소스코드를 어떻게 OS에서 실행하는지 과정을 살펴봅시다. 1. 자바 소스코드인 .java 파일을 컴파일러가 자바 바이트 코드인 .class로 변환합니다. 2. .class 코드를 JVM의 클래스 로더에게 보냅니다. 3. 클래스 토더는 JVM 런타임 데이터 영역으로 로딩하여 JVM의 메모리에 올립니다. 모든 자바 프로그램은 JVM을 통해 실행됩니다. 일단 프로그램이 실행되면 JVM은 OS로부터 프로그램을 수행하는데 필요한 메..
-
Git Repository not found 에러 해결 with 인텔리제이 단축키
⚠️ 에러 상황 프로젝트 organization에 초대받고, 리드 개발자 분께서 private 레포지토리를 하나 생성하여 초기 세팅을 한 상태에서 git clone을 했습니다. 그리고 한참 로컬에서 작업하다 Intellij 단축키로 git push를 하려고 하니 해당 에러가 나면서 젯브레인을 통해 깃헙 로그인을 하라는 창만 자꾸 나타났습니다. remote: Repository not found.fatal: repository 'https://github.com/organization /repositoryName.git/' not found 뒤늦게 레포지토리에서 제 권한이 read였다는 걸 알고, 권한 수정을 부탁드려서 admin으로 바꿨지만 여전히 같은 에러를 내고 있었습니다. 레포의 admin권한을 받..
🍎 인기 포스트
-
JPA 구조는 어떻게 되어있고 spring-data-jpa와는 뭐가 다를까?
JPA는 Java Persistence API로, 자바 객체와 DB를 매핑하기 위한 인터페이스를 제공하는 자바 ORM 기술의 표준 명세입니다. SQL Mapper ORM sql과 객체를 매핑 DB와 객체를 매핑 mybatis, jdbcTemplate 등 hibernate, EclipseLink 등 개인적으로 mybatis를 썼을 때는 복잡한 sql문이 필요할 때는 비교적 편리하게 작성할 수 있다는 장점이 있었습니다. 하지만 DB를 중간에 변경하기 어렵고, 기획 변경사항이 생길 때마다 sql문을 일일이 수정해줘야하는 반복 작업을 수행해야 했습니다. 그래서 CRUD를 하루종일 짜고 있는 개발에서 벗어나 비즈니스 로직에 집중하기 위해 ORM 에 관심을 가지게 되었습니다. ❓ORM이란 객체는 객체대로, DB는 ..
2022.01.06 00:06 -
[Python] KoNLPy mecab / mecab-ko-dic 설치하기
KoNLPy는 형태소 분석 파이썬 패키지로, kkma나 Komoran, Twitter, mecab 등 다양한 tag 패키지가 있습니다. 그중에서도 mecab을 쓴 이유는, 문장에서 '의약품명'을 추출하기 위해서 사용자 사전을 써야하기 때문이었습니다. 🔨Mecab-ko / Mecab-ko-dic 설치 mecab을 사용하려면 KoNLPy 설치와 별도로 mecab-ko와 mecab-ko-dic을 둘 다 설치해줘야합니다. 먼저 각각 최신 tar.gz 파일을 다운로드해주세요. 현재 최신 파일인 mecab-0.996-ko-0.9.2.tar.gz, mecab-ko-dic-2.1.1-20180720.tar.gz 로 진행했습니다. 👉mecab-ko 다운로드: https://bitbucket.org/eunjeon/meca..
2020.08.12 16:52 -
[Springboot] '최근 읽은 글' Dto로 Redis에 저장하고 조회하기 AtoZ
❓ redis 를 선택한 이유 블로그 홈페이지를 만드는 프로젝트에서, "최근 읽은 글" 을 개발해야하는 상황이 있었습니다. velog 같은 서비스에서는 꽤 오랜 기간동안 내가 읽은 글을 저장하는 듯 했는데, 현재 프로젝트의 기획에서는 일주일이라는 기간이 지정되어있었습니다. 처음에는 테이블을 하나 더 생성해야하나 고민이 되었는데, 읽은 글 특성 상 단기간에 많은 데이터가 수집된다는 점과 만료 기간을 설정하는 것이 성능 상으로 좋지 않을 것이라고 생각했습니다. 그러다 이전 프로젝트에서 refreshToken을 저장할 때 redis를 사용했던 것이 생각나서, redis로 조회한 글 데이터를 캐싱하고, 일정 기간이 지나면 삭제되는 기능을 적용해보고자 합니다. 📌 구현해야하는 기능 redis list 자료형을 사..
2021.06.18 17:53 -
Springboot Gradle + AWS EC2 + Jenkins + Docker로 배포까지(4) : Jenkins에서 도커 이미지 배포하기
1. Dockerfile, docker 배포 파일 준비하기 2. Jenkins에서 ssh 설정하기 3. Jenkins 권한 설정하기 원래는 github 올림 → Jenkins에서 github에 올라와있는 springboot 프로젝트를 가져와서 빌드 → 메인 서버에 .jar 형태로 파일을 전송 → 실행 을 하고 싶다면 다음과 같은 방법을 써야하지만, 저는 springboot 서버를 docker 컨테이너에서 실행할 것이므로 다음과 같은 플로우로 가려고 합니다. github 올림 → Jenkins에서 github에 올라와있는 springboot 프로젝트를 가져와서 빌드 → jenkins 컨테이너에서 이미지로 빌드해서 도커 hub에 push → 메인 서버에서는 docker image를 받아서 컨테이너 실행 참고..
2021.04.30 16:29